无法打开文件进行写入

时间:2010-04-27 06:51:01

标签: php file file-io filesystems

我正在尝试写入文件。我在file_exists之前对其进行fopen检查,然后返回true(文件确实存在)。

但是,该文件无法使用此代码并且每次都会出错:

$handle = fopen($filename, 'w');
if($handle)
{
    flock($handle, LOCK_EX);
    fwrite($handle, $contents);
}
else
{
    echo 'ERROR: Unable to open the file for writing.',PHP_EOL;
    exit();
}
flock($handle, LOCK_UN);
fclose($handle);

有没有办法可以获得更具体的错误详情,说明为什么这个文件不允许我打开它进行写作?我知道文件名是合法的,但由于某种原因它只是不让我写它。我有写权限,我能够写和写另一个文件。

4 个答案:

答案 0 :(得分:2)

仅仅因为该文件存在并不意味着您有权写入该文件。在尝试写入文件之前,您应该使用is_writable检查PHP是否有权这样做。

答案 1 :(得分:1)

如果你使用的是PHP 5.2+,你可能会对error_get_last()感兴趣 在您的开发系统上,您还可以在脚本中通过error_reporting()或(最好)在php.ini中增加错误报告级别。

error_reporting(E_ALL);
ini_set('display_errors', 1);

$handle = fopen($filename, 'w');
if(!$handle) {
  echo 'ERROR: Unable to open the file for writing.',PHP_EOL;
  var_dump(error_get_last());
  exit();
}

flock($handle, LOCK_EX);
fwrite($handle, $contents);
flock($handle, LOCK_UN);
fclose($handle);

答案 2 :(得分:1)

或获取错误的一般方法:

ini_set('display_errors',1); // for the development PC only
error_reporting(E_ALL); // ALWAYS

查看实际的错误消息

答案 3 :(得分:0)

听起来您正在写入的目录没有正确的权限。