使用 fopen 和 fwrite 与 Zend Framework


Using fopen and fwrite with Zend Framework?

我正在尝试使用 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
}
// ...