代码在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
答案 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)。并设置所需的权限。
如果这没有帮助,请检查safe_mode
。