我正在构建一个 Drupal 站点,它使用 apache 用户(id=40)执行各种自动磁盘操作。
问题是该网站建立在属于用户 ID 10001(即我的主 FTP 帐户)的子域上,因此文件系统属于该用户 ID。
所以我不断收到这样的错误:
warning: move_uploaded_file() [function.move-uploaded-file]: SAFE MODE Restriction in effect.
The script whose uid is 10001 is not allowed to access /var/www/vhosts/domain.com/httpdocs/sites/default/files/images/user owned by uid 48 in /var/www/vhosts/domain.com/httpdocs/includes/file.inc on line 579.
我尝试将 httpd.conf 中的 apache 组更改为 apache:psacln,psacln 是所有 Web 用户的默认组,但这没有帮助。
现在的情况是:
- ..../files/images/ = 777 和 chown = ftplogin:psacln
- ..../files/images/user = 775 和 chown = apache:psacln
- ..../files/tmp = 777 和 chown = ftplogin:psacln
因此显然 uid 40 和 10001 都有权限写入所涉及的 3 个目录中的任何一个,但仍然不能。
我是不是漏掉了什么?有人能帮忙吗?
编辑
解决方案只是将域/子域设置为在 CGI 模式下使用 apache,而不是直接使用开箱即用模式。
谢谢!
答案1
您使用的是哪个版本的 Plesk?也许您可以将站点更改为使用 PHP-CGI,这样,任何 PHP 脚本都将以 FTP 用户身份运行。然后,确保 httpdocs 层次结构中的所有文件都归 FTP 用户所有。也许这会有所帮助?
答案2
我在使用 Drupal 时也遇到了这个问题。
我通过禁用 php 的安全模式解决了这个问题。这可以通过 Plesk 完成,也可以手动编辑运行 drupal 的域的 conf 目录中的 httpd.include,然后运行apache2ctl 优雅。