即使在服务器上激活安全模式,如果脚本文件,目标文件和父文件夹归同一用户所有,fopen也应该没有任何问题。任何想法为什么会这样? 这些文件有755的权限。 感谢您的时间和精力。
$filename="file.html";
echo "Current User: ".get_current_user()."; UID: ".getmyuid()."; GID: ".getmygid()."<br/>";
echo "Current PID: ". getmypid() . "<br/>";
echo "Parent folder owner: ". fileowner(".") . "<br/>";
echo "$filename owner: " . fileowner($filename) . "<br/>";
echo "Current folder is writable: " . is_writable($filename);
输出:
当前用户:vnnamp; UID:32024; GID:32026 父文件夹所有者:32024 file.html所有者:32024 当前文件夹是可写的:false
答案 0 :(得分:1)
您确定您的脚本在正确的目录中运行吗?
如果不是,那么您传递的文件名可能不存在,这就是is_writable()
返回false的原因。使用getcwd()
打印出脚本正在运行的目录(可以使用chdir()
设置)或使用绝对文件名。
编辑:只是总结下面的讨论:
$_SERVER['DOCUMENT_ROOT']
前缀路径:Nope posix_getpwuid(posix_geteuid())
:是的,是问题的原因答案 1 :(得分:0)
如果用户是文件的所有者,则并不意味着文件应该是用户可写的。它可能具有0444左右的权限。
答案 2 :(得分:0)
缓存is_writable()函数的结果。尝试使用clearstatcache()