我正在使用 centos 5.7,其中 cPanel WHM 运行 fastcgi/suEXEC
我正在尝试使特定文件夹可写以允许脚本上传文件但似乎遇到了问题。
我想要可写的文件夹(以及所有递归文件夹)是:
/home/mydomain/public_html/uploads
并且我只希望用户“songbanc”运行的脚本能够写入该目录。
我尝试了以下方法:
chown -R songbanc /home/mydomain/public_html/uploads
chmod -R 755 /home/mydomain/public_html/uploads
但它似乎仍然不起作用。
仅当我通过 FTP 客户端手动将权限设置为 777 时,脚本才会上传文件。
我认为我误解了如何使用 fastcgi 为用户设置权限,希望有人可以帮助我。
提前致谢
编辑:在其中一个脚本或文件夹上运行 getfacl 会产生以下结果:
# file: home/mydomain/public_html/ripples/1.jpg
# owner: songbanc
# group: songbanc
看来楼主说得对?我现在完全糊涂了!
编辑2:
情节变得更加复杂... lsattr 和 chattr 返回了不适当的 ioctl 设备 在读取标志时...
答案1
首先,suEXEC
这是一个 Apache 1.x 模块。由于各种原因和支持问题,升级到 Apache 2.xsuPHP
是正确的选择。请参阅我之前的帖子这里如何升级。
可能发生的情况有很多,我将简要介绍一下,但升级到 suPHP 很可能会解决这个问题。值得注意的是,更改PHP 5 Handler
为suPHP
是这里的重要部分。
原因:
您没有运行
suEXEC
,事实上脚本也没有以用户名执行。您可以执行,top -u username -d 1
其中用户名是帐户的用户名。您应该注意到每次运行时 php 文件都会出现在该屏幕上。父文件夹没有正确的权限。如果您运行的是旧版本的 Apache,我怀疑是这种情况,因为您提到
suEXEC
您可以避免这种情况。如果您运行的是 suPHP,这不是问题,因为它会捕获它。因此,请确保父文件夹具有正确的权限。您没有运行 PHP。suPHP 或 suEXEC 仅适用于 PHP 脚本。如果您正在运行其他任何程序,则它们可能会或可能不会在该用户下运行,具体取决于您如何设置 Apache。在大多数情况下,它们应该会运行,但谁知道呢!
总结:使用 suPHP 升级到 Apache 2.x 即可解决问题。只需确保按照我发布的链接所述将 PHP 处理程序更改为 suPHP 即可。