2016-03-11 140 views
5

我們正試圖從PHP5切換到PHP7。phpinfo說php.ini路徑是C: Windows但沒有php.ini那裏

我們現在已經安裝了Apache和PHP。

但是,我們在php.ini文件中所做的更改不起作用。

通過phpinfo()我們意識到原因是Configuration File (php.ini) PathC:\Windows

在我們httpd.conf我們有:

# PHP7 setup 
LoadFile "C:/test/php/php7ts.dll" 
LoadModule php7_module "C:/test/php/php7apache2_4.dll" 
AddHandler php7-script .php 
PHPINIDir "C:/test/php" 

我的理解是應該讓Apache查找php.inic:\test\php(正斜槓在http.conf中使用要求)

不瞭解Apache爲什麼不尋找我們告訴它的php.ini的原因,我們把php.ini放在c:\Windows那裏,它仍然沒有被讀取(我們在php.ini中加載的模塊沒有加載到phpinfo中)。

每當我們對php.inihttpd.conf進行更改時,我們都會使用Apache監視器重新啓動Apache。

我們如何告訴Apache在特定的目錄中讀取php.ini文件,而不是我們上面嘗試的?

附錄:

enter image description here

我們改用一切恢復PHP5現在得到相同的錯誤在哪裏PHP的路徑是上面的截圖。它說它現在是PHP 5.6.0,所以它顯然正在加載新的PHP版本,但有些內容已更改,因此php.ini文件在任一版本中都不會被讀取。 (???)

重新啓動也沒有幫助。

+1

可能會有所幫助https://www.howtoforge.com/how-to-specify-a-custom-php.ini-for-a-website-apache2-with-mod_php –

+0

嘗試使用PHPRC ?您可以指定包含php.ini的目錄的路徑,而不是指向php.ini的直接路徑。所以** export PHPRC =/test/php **。希望這可以幫助? – izk

+0

這聽起來有點像執行'phpinfo()'腳本時的緩存問題...確保在瀏覽器中進行深度重新加載或爲此禁用緩存。 – arkascha

回答

2

您可以嘗試添加斜線

PHPINIDir "C:/test/php/" 

manual

注意:請記住,在Windows Apache的配置文件中加入路徑值的時候,比如 C所有反斜線: \ directory \ file.ext應該轉換爲正斜槓: c:/directory/file.ext。 目錄中的尾部斜線也可能是必需的。

+0

關於尾部斜線的有趣評論...我從來沒有使用過它,甚至在同一頁上的示例也不使用...但是對於PHP和Windows,您永遠不會知道。 –

+0

我試過'PHPIniDir「C:/ test/php /」'和'PHPINIDir「C:/ test/php /」'但無濟於事。就好像它忽略了這條線。如果我拿出任何其他行,例如'LoadFile「C:/test/php/php5ts.dll」'或'LoadModule php5_module「C:/test/php/php5apache2_4.dll」'然後PHP停止工作,所以我知道Apache解析這些行,它只是忽略看起來是因爲某種原因''PHPINIDir'行。 –

+0

並且在'httpd.conf'文件的其他地方沒有提及PHP,例如沒有其他設置覆蓋這些。 –