我想打开.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";
}
答案 0 :(得分:0)
打开文件时检查文件许可权。如果文件权限不允许写入,则需要在调用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";
}