2011-09-07 58 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"