我正在尝试使用 Zend Framework 检查文件是否存在,如果文件不存在,请创建它。 下面是正在使用的代码:
$filename = "/assessmentsFile/rubrics/$rubricID.php";
$somecontent = "test";
if (!$handle = fopen($filename, 'w+')) {
echo "Cannot open file ($filename)";
exit;
}
// Write $somecontent to our opened file.
if (fwrite($handle, $somecontent) === false) {
echo "Cannot write to file ($filename)";
exit;
}
但是,我认为由于Zend处理文件结构的方式,如果文件不存在,它就会吐出:
警告:fopen(/assessmentsFile/rubrics/1.php) [function.fopen]:无法打开流:没有这样的文件或目录
由于 fopen 函数不起作用,fwrite 无法写入文件。
有没有其他方法可以做到这一点?
问题很可能出在通往$filename
的路径上。
你有
$filename = "/assessmentsFile/rubrics/$rubricID.php";
它尝试在服务器的根目录中创建一个名为 assessmentsFile
的文件。
您很可能需要使用:
$filename = $_SERVER['DOCUMENT_ROOT'] . "/assessmentsFile/rubrics/$rubricID.php";
如果assessmentsFile
文件夹位于您的 Web 根目录中,$_SERVER['DOCUMENT_ROOT']
应该可以解决问题。 否则,您可以使用其他变量来获取完全限定的路径,或者您可以简单地对路径进行硬编码:
$filename = "/home/yoursite/public_html/assessmentsFile/rubrics/$rubricID.php";
有一个
函数file_exists
告诉你文件是否存在,通过is_file
你可以检查它是一个文件(而不是一个目录)。
另一种方法是通过在函数调用前放置 @ 来抑制警告(例如 $handle=@fopen(...)
,但最好检查文件是否存在)
试试这个:
if(is_file($filename)){ // exists
$handle=fopen($filename,"w+");
}else{
$handle=fopen($filename,"w"); // create it
}
// ...