无法在php中打开文件

时间:2010-04-12 08:58:26

标签: php apache file-io permissions fopen

代码在fopen()处阻塞:

<?php 
  ini_set('display_errors',1);
  error_reporting(E_ALL);
  $fp = fopen("/path/to/file/some_file.txt","a") or die("can't open file");
  fwrite($fp,"some text");
  fclose($fp);
?>

结果网页上写着:

“警告:fopen(/path/to/file/some_file.txt)[function.fopen]:无法打开流:第5行/var/www/html/test.php中的权限被拒绝 无法打开文件“

我尝试使用文件权限,但无济于事。我使用chown apache:apache some_file.txt更改了用户/组,并使用chmod 755 some_file.txt更改了权限。以下是ls -l /path/to/file/

的相关结果
-rwxr-xr-x 1 apache apache 0 Apr 12 04:16 some_file.txt

4 个答案:

答案 0 :(得分:4)

不要忘记,即使Apache被授予读取文件的权限,您也必须授予对所有父目录的Apache访问权限。

/path/to/file/
/path/to
/path

所有人都需要授予Apache至少“读取”权限。

答案 1 :(得分:3)

您确定apache是实际运行PHP的用户吗?

并且:确保apache用户可以在文件系统中达到some_file.txt,并且不会被some_file.txt以上目录的某些访问限制阻止。

答案 2 :(得分:2)

在你修复错误之前,最好知道修复哪个错误 在脚本顶部添加这些行,然后重试

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

PHP会告诉你,问题是什么

答案 3 :(得分:1)

"a"表示您想要追加,需要与写入相同的权限。

每个人至少需要666个权限才能写入。或者将文件所有者更改为服务器组(Ubuntu上的www-data)。并设置所需的权限。

这是Permission calculator

如果这没有帮助,请检查safe_mode