Я хочу открыть файл .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";
}
Права доступа к файлам проверяются при открытии файла. Если права доступа к файлам не позволяют писать, вам нужно позвонить 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";
}
Других решений пока нет …