1

我正在尝试使用 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 无法写入文件。

还有另一种方法吗?

4

2 回答 2

2

最有可能的问题在于$filename.

你有

$filename = "/assessmentsFile/rubrics/$rubricID.php";

它试图在服务器的根目录中创建一个名为assessmentsFile.

您很可能需要使用:

$filename = $_SERVER['DOCUMENT_ROOT'] . "/assessmentsFile/rubrics/$rubricID.php";

$_SERVER['DOCUMENT_ROOT']如果该assessmentsFile文件夹位于您的 Web 根目录中,则应该可以解决问题。否则,您可以使用其他变量来获得完全限定的路径,或者您可以简单地对路径进行硬编码:

$filename = "/home/yoursite/public_html/assessmentsFile/rubrics/$rubricID.php";
于 2012-08-12T23:45:49.187 回答
1

有一个函数file_exists可以告诉您文件是否存在,并且is_file您可以检查它是一个文件(而不是一个目录)。

(另一种方法是通过在函数调用之前放置 @ 来抑制警告(例如$handle=@fopen(...),但最好检查文件是否存在)

试试这个:

if(is_file($filename)){ // exists
  $handle=fopen($filename,"w+");
}else{
  $handle=fopen($filename,"w"); // create it
}
// ...
于 2012-08-12T23:29:53.773 回答