(PHP) fwrite не пишет, а перезаписывает - PullRequest
0 голосов
/ 18 декабря 2018

Я хочу открыть файл .xml и записать содержимое переменной $xml_doc в файл.Проблема в том, что когда файл пуст, он отказывается писать.Он пишет только тогда, когда текст уже есть (например, abc123).Я пытался изменить режим функции fopen на a, a +, w, w + и w, w + просто стирают содержимое файла, но ничего не пишут.

if($telecharger) {
    // Creation du fichier
    $nom = "PRELEVEMENT";
    $filename= "/home/alc/alcg_si/alcgroup/intranet/documents/prelevement_xml/".$nom."__".$date_prev.".xml";
    try {
        $file = fopen($filename, 'r+') or die("Error: can't open file.");
        chmod($filename, 0777);

        fwrite($file, '$xml_doc') or die("Error: can\'t write in file.");
        fclose($file);
    } catch (Exception $e) {
        echo "MERDEEEE<br>";
        echo 'Caught exception: ',  $e->getMessage(), "\n";
    } 

1 Ответ

0 голосов
/ 18 декабря 2018

Права доступа к файлам проверяются при открытии файла.Если права доступа к файлам не позволяют писать, вам нужно позвонить chmod() до , позвонив fopen().

Вы также можете заменить весь код, который вызывает fopen, * 1008.* и fclose с одним вызовом file_put_contents().

И не помещайте переменную $xml_doc в одинарные кавычки, что препятствует ее расширению.В файл будет записана буквенная строка $xml_doc.

if($telecharger) {
    // Creation du fichier
    $nom = "PRELEVEMENT";
    $filename= "/home/alc/alcg_si/alcgroup/intranet/documents/prelevement_xml/".$nom."__".$date_prev.".xml";
    try {
        if (file_exists($filename)) {
            chmod($filename, 0644) or die("Error: can't change file permissions");
        }
        file_put_contents($filename, $xml_doc) or die("Error: can\'t write in file.");
    } catch (Exception $e) {
        echo "MERDEEEE<br>";
        echo 'Caught exception: ',  $e->getMessage(), "\n";
    } 
...