PHP open_basedir在Apache中损坏,但在运行时在PHP中工作

我正在迁移网站到一个新的服务器和一个站点使用open_basedir在其网站的可用文件给我的问题,只是显示一个空白页面,当我尝试加载它。

我已经通过将apache VirtualHost中的open_basedirconfiguration移动到ini_set()中的index.php页面来解决这个问题。 这个修复困扰我,虽然我觉得我失去了一些东西。 是否有一个特定的Apache设置,我需要改变或得到这个在VirtualHostconfiguration工作?

请注意,我更改站点可用文件后,重新启动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 

我甚至试图只设置根目录(php_flag open_basedir /),它仍然给我一个错误。

现有服务器:Debian GNU / Linux 4.0,PHP 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是字符串。 请参阅如何更改配置设置以获取更多信息。