PHP文件不可写:如果需要chmod,chown或chgrp,如何通过php检查

时间:2011-04-04 21:29:35

标签: php file permissions

当我的安装脚本识别出文件(日志文件)不可写时 - 通过:

 is_writable('myerror.log');

我想向“冲浪者”(软件管理员)展示如何解决这个问题。哦,男孩不是每个“软件管理员”都很熟练: - (

显示讯息: 我想向软件管理员显示,如果文件的用户/组与webservers用户/组不同,他应该将文件的所有者设置为webserver运行的用户(我不想建议让它成为世界可写)。

如果网络服务器用户或组适合文件用户或组,我想显示软件管理员应该运行chmod。


后台我意识到我的apache进程在9x www-data和1x root下运行。如果我打电话

$scriptRunnerUserId = getmyuid();
$scriptRunnerGroupId = getmygid();

我每个都会得0,意思是“root”和“root”。但是如果我有一个owner =“root”和group =“root”的文件,并且0664 is_writeable()仍然返回false。仅当我设置0666(世界可写)时才返回true。如果我设置owner =“www-data”和chmod 0644它是可写的。意思是:getmyuid()不返回预期值。

“开发人员技术不熟练”的案例? ;-) (如果可能的话,我不想让exec()调用)

PS:请不要责怪我的apache是​​root用户(它是用于开发的虚拟机)。

1 个答案:

答案 0 :(得分:2)

假设您正在POSIX系统上运行(如果您拥有root用户可能就是这样),您可以尝试使用posix_geteuid来查找有效的用户ID。