(PHP) fwrite не пишет, а перезаписывает

Я хочу открыть файл .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

Решение

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

Вы также можете заменить весь код, который вызывает fopen, fwrite, а также 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";
}
0

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector