Fwrite geeft 0 bytes terug bij sommige bestanden.

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Bas Timmer

Bas Timmer

25/11/2005 07:48:00
Quote Anchor link
Ik ben de laatste tijd bezig met een updater voor mijn script.

Mijn code:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
<?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
 
PHP hulp

PHP hulp

23/11/2024 08:50:40
 
Vdleije .

vdleije .

25/11/2005 07:55:00
Quote Anchor link
'r' Openen voor alleen lezen; plaats de bestands pointer aan het begin van het bestand.

'r+' Openen voor lezen en schrijven; plaats de bestands pointer aan het begin van het bestand.

'w' Openen voor alleen schrijven; plaats de bestands pointer aan het begin van het bestand en maak het bestand 0 bytes lang. Als het bestand niet bestaat, probeer het aan te maken.

'w+' Openen voor lezen en schrijven; plaats de bestands pointer aan het begin van het bestand en maak het bestand 0 bytes lang. Als het bestand niet bestaat, probeer het aan te maken.

'a' Openen voor alleen schrijven; plaats de bestands pointer aan het einde van het bestand. Als het bestand niet bestaat, probeer het aan te maken

'a+' Openen voor lezen en schrijven; plaats het bestands pointer aan het einden van de file. Als het bestand niet bestaat, probeer het aan te maken.
 
Bas Timmer

Bas Timmer

25/11/2005 13:25:00
Quote Anchor link
Deze functies die ik gebruik als het bestand al bestaat stonden in een user note, en zorgen voor overschrijven, zonder owner te wijzigen. Als het bestand niet bestaat, en W gebruikt wordt, werkt het trouwens ook net zo.
 
Vdleije .

vdleije .

25/11/2005 14:15:00
Quote Anchor link
bij w wody het 0
prbeer is a
 
Bas Timmer

Bas Timmer

25/11/2005 16:28:00
Quote Anchor link
Nee, want een updater moet namelijk bestanden vervangen.

En Fwrite hoort het aantal geschreven bytes terug te geven, bij sommige bestanden returnt hij het goede aantal, en bij sommige 0, en staat er ook echt 0 bytes in het bestand.
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.