2011-09-07 55 views
0

出於安全原因,我已經把HTML根下我yii文件夾,所以我的結構運行網站看起來像這樣open_basedir的限制和子域

/conf 
/httpdocs 
/httpsdocs 
/yii 

我實際上得到一個錯誤的open_basedir限制,即yii.php這是index.php中調出的httpdocs不在允許的路徑中。由於這個網站是一個子域名,我是否編輯主域名或子域名的vhosts.conf

什麼會正確的設置是允許

/var/www/vhosts/example.com/subdomains/mysubdomain/yii 

路徑來訪問?


編輯

所以我/var/www/vhosts/example.com/conf/vhost.conf文件現在看起來是這樣的:

AddHandler fcgid-script .php 
<Directory /var/www/vhosts/example.com/httpdocs> 
php_admin_value open_basedir ".:/var/www/vhosts/example.com/subdomains/mysubdomain/httpdocs:/tmp/:/var/www/vhosts/example.com/subdomains/mysubdomain/yii" 
FCGIWrapper /var/www/vhosts/example.com/bin/php-cgi .php 
Options +ExecCGI +FollowSymLinks 
allow from all 
</Directory> 

我已經重新配置並重新啓動Web服務器,但我仍然得到錯誤:

Warning: require_once() [function.require-once]: open_basedir restriction in effect. 
File(/var/www/vhosts/example.com/subdomains/mysubdomain/httpdocs/../yii/yii.php) is not within the allowed path(s): 
(/var/www/vhosts/example.com/subdomains/mysubdomain/httpdocs:/tmp) 
in /var/www/vhosts/example.com/subdomains/mysubdomain/httpdocs/index.php on line 26 
+1

你看:http://us3.php.net/manual/en/ini.core.php #ini.open-basedir? – ldg

+0

對於那些仍在這裏掙扎的人來說是一篇幫助我解決問題的文章:http://prattski.com/2008/09/13/plesk-open_basedir-fix/ – keeg

回答

0

我找到了答案。您必須指定不同的模塊,否則只需編輯虛擬主機文件就沒有太大的影響。這是關閉open_basedir,但您可以相應地編輯設置。

<Directory /var/www/vhosts/YOURDOMAIN.COM/subdomains/YOUSUBDOMAIN/httpdocs> 
    <IfModule sapi_apache2.c> 
    php_admin_value open_basedir none 
</IfModule> 
<IfModule mod_php5.c> 
    php_admin_value open_basedir none 
    </IfModule> 
</Directory> 

然後

# /usr/local/psa/admin/bin/websrvmng --reconfigure-vhost --vhost-name=YOURDOMAIN.COM 
# apachectl stop 
# apachectl start 

全部文章可以在這裏找到:http://prattski.com/2008/09/13/plesk-open_basedir-fix/

1

在虛擬主機中:

php_admin_value open_basedir ".:/var/www/vhosts/example.com/subdomains/mysubdomain/httpdocs:/my/own/tmp:/var/www/vhosts/example.com/subdomains/mysubdomain/yii"