這對服務器而言可能有點集中,但我希望有人能夠幫助。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支持說他們不能幫助我。這裏有人有什麼想法嗎?如果需要,我還可以提供更多信息。
你肯定**編輯'phpinfo()'返回的.ini文件嗎?你每次都重新啓動你的Web服務器嗎? – juco 2013-03-12 18:23:07
我是因爲phpinfo正在改變,因爲我做了編輯,是的我重新啓動httpd每次 – Phil 2013-03-12 18:29:50
如果沒有風險暴露我的phpinfo我可以發送給你的鏈接,所以你可以看到錯誤 – Phil 2013-03-12 18:32:20