微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

PHP open_basedir在Apache中被破坏但在运行时在PHP中运行

我正在将网站迁移到新服务器,并且在其站点中使用open_basedir的一个站点 – 可用文件给我带来了问题,并且当我尝试加载它时只显示空白页面.

我已经通过将open_basedir配置从Apache VirtualHost移动到ini_set()中的前面index.PHP页面来修复它.这个修复困扰我,但我觉得我错过了一些东西.是否需要更改特定的Apache设置或使其在VirtualHost配置中工作?

请注意,我在更改站点可用文件后重新启动了apache.

这是网站可用的文件

<VirtualHost *:443>
  ServerName www.mysite.com
  ServerAdmin webmaster@mysite.com
  DocumentRoot /var/www/www.mysite.com/content
  PHP_flag open_basedir /var/www/www.mysite.com/
  SSLEngine On
  SSLCertificateFile /etc/ssl/certs/www_mysite_com.crt
  SSLCertificateKeyFile /etc/ssl/private/www_mysite_com.key
  SSLCACertificateFile /etc/ssl/certs/DigiCertCA.crt
  RewriteEngine on
  FileETag INode MTime Size
  ExpiresActive On
  ExpiresDefault "access plus 1 week"
  ExpiresByType text/html "access plus 5 seconds"
  CustomLog /var/log/apache2/access.log combined
</VirtualHost>

这是Apache给我的错误(/var/log/apache2/error.log):

... PHP Warning:  UnkNown: open_basedir restriction in effect. File(/var/www/www.mysite.com/content/index.PHP) is not within the allowed path(s): (0) in UnkNown on line 0
... PHP Warning:  UnkNown: Failed to open stream: Operation not permitted in UnkNown on line 0
... PHP Fatal error:  UnkNown: Failed opening required '/var/www/www.mysite.com/content/index.PHP' (include_path='.:/usr/share/PHP:/usr/share/pear') in UnkNown on line 0

我甚至试图将基目录设置为root(PHP_flag open_basedir /),它仍然给我一个错误.

现有服务器:Debian GNU / Linux 4.0,PHP Version 5.2.0-2,Apache 2.2.3

新服务器:Debian GNU / Linux 6.0,PHP版本5.3.3-7 squeeze3,Apache 2.2.16

解决方法:

请尝试以下方法

<VirtualHost *:443>
    ...
    PHP_admin_value open_basedir "/var/www/www.mysite.com/"
    ...
</VirtualHost>

您正在使用* _flag,您应该使用* _value.

* _flag用于布尔值,而* _value用于字符串.有关更多信息,请参见How to change configuration settings.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐