通过 apache 上传的文件不计入用户配额

通过 apache 上传的文件不计入用户配额

我有一台共享托管服务器,其中装有 CentOS Linux 和 cPanel,运行 Apache mod_php。我们使用 Linux 的用户配额来强制每个网站保持在他们购买的磁盘空间量之内。但是,许多网站都有文件上传系统,无论是公开的还是在其管理员中(例如 CMS 软件)。由于此软件在 mod_php 下运行,因此上传的文件最终属于运行 Apache 的用户,并且不会计入用户的磁盘配额。

我能想到的唯一解决方法是编写一个脚本,该脚本会查看 /home 中的每个目录并chown检查 public_html 中的所有文件,以便它们归正确的用户所有,然后让该脚本每小时通过 cron 运行一次。在我编写这样的脚本之前,有没有更好的解决方案?(或者是否存在这样的脚本?)

编辑:我必须能够运行 mod_php。CGI php 不是一个选项。

答案1

尝试使用 mod_suphp(或在适当的情况下使用 mod_suexec)。这将导致 apache 在适当的用户下运行,因此他们的文件所有权将是正确的。

答案2

基本上,如果你不能在 CGI 模式下运行 PHP,你就完蛋了。你不能对文件执行 chown,因为这样 Web 服务器以后就不能修改它们了(这对于某些应用程序来说很重要),除非你想让你的权限和 umask 变得非常奇怪,并且每次没有使用正确的 umask 预先配置某些东西时都要处理权限混乱的问题。

不过,您反对在 CGI 模式下运行 PHP 是没有根据的;我所在的公司拥有多台共享托管服务器,我们通过 suexec 运行 PHP,没有客户抱怨功能不足。是的,它的速度稍慢,但启动开销被淹没在大多数 PHP Web 应用程序效率低下的噪音中。

相关内容