2013-03-12 144 views
1

这对服务器而言可能有点集中,但我希望有人能够帮助。open_basedir没有正确设置

我有一个PHP的CodeIgniter应用程序,我试图设置配置文件(如application/config/database.php)设置在服务器(或本地计算机),所以他们不在github(所以数据库密码不被跟踪),它使一切都更容易。

所以我把它本地主机上完美的工作,基本上它可以追溯到:

/path_before_httpdocs/config/development/config.php 

,但我的文件夹结构设置在服务器上,但我得到这个错误:

Warning: require(): open_basedir restriction in effect. 
File(/var/www/vhosts/mysite.com/subdomains/staging/config/staging/config.php) is not within the allowed path(s): 
(/var/www/vhosts/mysite.com/subdomains/staging/httpdocs/:/tmp/:/var/www/vhosts/mysite.com/subdomains/staging/httpsdocs/:/tmp/) 
in /home/mysite/staging/deploy/releases/20130312155222/httpdocs/application/config/config.php on line 12 

所以我做的第一件事是去php.ini文件,看看它是什么。它没有设置,所以我将它设置为php.ini,然后重新启动httpd。所以现在如果我运行phpinfo()我看到这个:

Directive |  Local Value                           |  Master Value 
open_basedir | /var/www/vhosts/mysite.com/subdomains/staging/httpdocs/:/tmp/:/var/www/vhosts/mysite.com/subdomains/staging/httpsdocs/:/tmp/ | /var/www/vhosts/mysite.com/subdomains/staging/config/staging/:/tmp/ 

我仍然得到错误。所以我接下来要做的事就是尝试

ini_set('open_basedir', '/var/www/vhosts/mysite.com/subdomains/staging/config/staging/:/tmp/'); 

这也没用。所以,接下来的事情是我刚刚ini_get呼应(“的open_basedir”),这回

/var/www/vhosts/mysite.com/subdomains/staging/httpdocs/:/tmp/:/var/www/vhosts/mysite.com/subdomains/staging/httpsdocs/:/tmp/ 

所以它看起来像它忽略我的php.ini

我试图按照this article(我托管在DV 4在mediatemple上)。 Mediatemple支持说他们不能帮助我。这里有人有什么想法吗?如果需要,我还可以提供更多信息。

+0

你肯定**编辑'phpinfo()'返回的.ini文件吗?你每次都重新启动你的Web服务器吗? – juco 2013-03-12 18:23:07

+0

我是因为phpinfo正在改变,因为我做了编辑,是的我重新启动httpd每次 – Phil 2013-03-12 18:29:50

+0

如果没有风险暴露我的phpinfo我可以发送给你的链接,所以你可以看到错误 – Phil 2013-03-12 18:32:20

回答

0

我终于来了一个答案。在Plesk中,我能够设置php设置并定义open_basedir。