Ik ben de laatste tijd bezig met een updater voor mijn script.
Mijn code:
<?php
$sqlurl = $_GET['file'];
$sqlserv = $_GET['serv'];
$local = CMS_ROOT_PATH.'/'.$_GET['local'];
$sql = sendReq($sqlserv, $sqlurl); // Geeft waarde terug van een fsockopen, exclusief headers.
if (!file_exists($local)) {
$fp = @fopen($local, 'w');
if (!$fp) {
die('error');
}
fwrite($fp, $sql, strlen($sql));
fclose($fp);
} else {
$file = fopen($local, 'r+b'); // binary update mode
if (!$file) {
die('error');
}
rewind($file);
if (($bytes = fwrite($file, $sql, strlen($sql))) !== false) {
echo $bytes.' bytes written!';
}
fflush($file);
ftruncate($file, ftell($file));
fclose($file);
}
$file = file_get_contents($local);
if ($file != $sql) {
die('error');
}
exit;
?>
Als ik het aanroep met update-rpc.php?token=updater&getfile&serv=ck485537-a.dokku1.fr.home.nl
&file=/bascms2/update/updates/UPD1/module.txt
&local=modules/admin/module.php
, dan echo't het script "0 bytes written!", en staat er ook 0 bytes in het bestand. Ook al dat $sql wel het bestand bevat, namelijk de inhoud van http://ck485537-a.dokku1.fr.home.nl/bascms2/update/updates/UPD1/module.txt .
Als ik het aanroep met
update-rpc.php?token=updater&getfile&serv=ck485537-a.dokku1.fr.home.nl
&file=/bascms2/update/updates/UPD1/lang.txt
&local=modules/admin/lang/en/lang.php
, geeft hij gewoon "150 bytes written", en staat alle inhoud nog in het bestand.
Wat ik al probeerde: User notes op PHP.net, niks daarvan werkt. Googles, niks gevonden. Uitgebreid debuggen, niks hielp. Zend studio booten, nope :(
Weet iemand een oplossing?
Groeten,
Bas
1.016 views