我正在尝试写入文件。我在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);
有没有办法可以获得更具体的错误详情,说明为什么这个文件不允许我打开它进行写作?我知道文件名是合法的,但由于某种原因它只是不让我写它。我有写权限,我能够写和写另一个文件。
答案 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)
听起来您正在写入的目录没有正确的权限。