好吧,這可能只是我對PHP不瞭解,但在這裏。PHP.ini不會自動加載,即使它存在於配置位置
我在Ubuntu Hardy上。我有一個自定義編譯版本的PHP,我用這些參數編譯過。
./configure
--enable-soap
--with-zlib
--with-mysql
--with-apxs2=[correct path]
--with-config-file-path=[correct path]
--with-mysqli
--with-curlwrappers
--with-curl
--with-mcrypt
我已經使用命令pecl install pecl_http
來安裝http.so擴展名。它位於我的php.ini的正確模塊目錄中。我的php.ini正在加載,我可以改變ini內的東西,並影響php。我已經在我的php.ini中包含了extension=http.so
行。
工作正常。直到我爲了增加這些編譯選項添加了IMAP
--with-openssl
--with-kerberos
--with-imap
--with-imap-ssl
哪些失敗了,因爲我需要我固定由apt-get install libc-client-dev
這之後的PHP編譯好,我已經工作了IMAP支持,嗚的C客戶端庫。然而,現在我所有的HttpRequest調用都是http.so中pecl_http擴展的一部分,導致Fatal error: Class 'HttpRequest' not found
錯誤。我認爲http.so模塊不再以某種原因加載,但我找不到任何顯示原因的錯誤。
您可能會說:「您是否嘗試撤消新的imap設置?」我會回答。是的,我有。我直接解開了所有配置更改並卸載了c-client庫,但仍然無法使其工作。我認爲這很奇怪......我沒有做出任何會導致這個問題的變化。看過之後,我也發現不僅http擴展不再加載,而且所有通過php.ini加載的擴展都不再加載。
有人可以至少給我一些進一步的調試步驟?到目前爲止,我已經嘗試啓用所有錯誤,包括我的php.ini中的啓動錯誤,這對其他錯誤起作用,但是我沒有在命令行或通過apache看到任何啓動錯誤。再次,php.ini似乎被解析,因爲如果我運行php_info(),我得到的是php.ini中的設置。
編輯它似乎只有一些php.ini設置正在聆聽。有沒有辦法測試我的php.ini?
編輯編輯看來我再次被誤認爲php.ini不再被加載。但是,如果我運行php_info()我得到它正在尋找我的php.ini在正確的位置。
編輯編輯編輯我的配置位於下面的配置文件路徑位置,但它表示沒有配置文件加載。 WTF權限問題?它目前是644,所以如果不寫它,每個人都應該能夠閱讀它。我試圖讓它777,並沒有奏效。
Configuration File (php.ini) Path /etc/php.ini
Loaded Configuration File (none)
編輯編輯編輯編輯通過使用-c命令我能夠運行我的文件加載INI在命令行中使用-m表明我的模塊負載 所以沒有什麼是錯的PHP .ini
編輯編輯編輯編輯編輯我已經指出我的ini目錄配置應該是一個路徑,而不是在文件本身中查找php.ini文件。爲此,我嘗試設置/ etc,/ etc /,並讓php設置默認目錄,然後將我的ini文件移動到該目錄中。全部失敗:(
編輯編輯編輯編輯編輯我已經指出我的ini目錄配置應該是一個路徑來找到不是文件本身的php.ini文件。爲此,我有。嘗試設置的/ etc,/等/,並讓PHP設置默認的目錄,然後移動我的ini文件到該目錄中的所有失敗:(
編輯編輯編輯編輯編輯編輯進一步信息,PHP的命令行運行 - -ini和ls of dir它指向php設置。在運行成功的命令行上運行時使用-c選項運行,而不是當我不包含-c
[email protected]:/usr/local/lib$ php -ini | grep Configuration
Configuration File (php.ini) Path => /usr/local/lib
Loaded Configuration File => (none)
Configuration
[email protected]:/usr/local/lib$ ls /usr/local/lib
php php.ini python2.5 site_ruby
[email protected]:/usr/local/lib$ php -c /usr/local/lib/php.ini /var/www/toolbelt/test.php
[email protected]:/usr/local/lib$ php /var/www/toolbelt/test.php
Fatal error: Class 'HttpRequest' not found in /var/www/toolbelt/test.php on line 7
[email protected]:/usr/local/lib$
編輯編輯編輯編輯編輯編輯編輯更多信息。利用另一個堆棧交換文章中顯示的strace方法,我進行了測試,以查看是否有任何嘗試打開加載php所做的ini文件。沒有
[email protected]:/usr/local/lib$ sudo strace -e trace=open php -ini 2>&1 |grep php.ini
Configuration File (php.ini) Path => /usr/local/lib
[email protected]:/usr/local/lib$ sudo strace -e trace=open php -ini 2>&1 |grep /usr/local/lib
Configuration File (php.ini) Path => /usr/local/lib
extension_dir => /usr/local/lib/php/extensions/no-debug-non-zts-20060613 => /usr/local/lib/php/extensions/no-debug-non-zts-20060613
include_path => .:/usr/local/lib/php => .:/usr/local/lib/php
您是否嘗試卸載並重新安裝pecl模塊,然後重新編譯PHP以添加IMAP?否則,你有沒有嘗試重新安裝pecl本身? – Robin 2011-02-09 22:18:45
我沒有,但我只是試過,它沒有改變。看起來,經過進一步檢查,我的php.ini已經停止加載,即使我沒有做任何更改,php_info()告訴我它在正確的位置。 – 2011-02-09 22:25:18