2013-03-12 149 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。