2011-11-08 55 views
3

我正在將網站遷移到新服務器,並且在其站點中使用open_basedir的一個站點 - 可用文件給我提供了問題,並在我嘗試加載時顯示空白頁它。PHP open_basedir在Apache中損壞,但在運行時在PHP中運行

我已經通過將open_basedir配置從Apache VirtualHost移動到ini_set()中的前端index.php頁面來修復它。這個修復困擾了我,但我覺得我錯過了一些東西。是否有一個特定的Apache設置,我需要改變或什麼讓這個工作在VirtualHost配置?

請注意,在更改站點可用文件後,我確實重新啓動了apache。

這裏是網站可用文件:

<VirtualHost *:443> 
    ServerName www.mysite.com 
    ServerAdmin [email protected] 
    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版本5.2.0-2,阿帕奇2.2.3

新服務器:的Debian GNU/Linux的6.0,PHP版本5.3.3-7 + squeeze3,Apache 2.2的0.16

+0

PHP是否以Apache模塊運行?否則,你不能使用'mod_php'提供的'php_flag'指令。 –

回答

5

嘗試,而不是執行以下操作:

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

您正在使用*_flag,你應該使用*_value

*_flag用於布爾值,而*_value用於字符串。有關更多信息,請參見How to change configuration settings

+0

+1 - 我沒有發現* _flag *部分。 –

+0

謝謝Treffynnon!我瘋了! – programmer