Linux

對 cli 的 php.ini 所做的更改未生效

  • January 31, 2011

我有兩個php.ini文件-

  • /etc/php.ini在 cli 的情況下載入
  • /opt/lampp/etc/php.ini在瀏覽器的情況下載入。

在添加該行並重新啟動lampp後,我可以使用PHP的Mailparse擴展。extension=mailparse.so``/opt/lampp/etc/php.ini

但是在命令行的情況下我無法載入相同的內容-

得到PHP Fatal error: Call to undefined function mailparse_msg_create() in ...

mailparse_msg_create()Mailparse擴展的一部分。

我嘗試在進行更改甚至重新啟動系統後重新登錄使用者。需要做什麼才能使更改生效。

更新

我檢查了,php -i | grep 'Configuration File'

PHP Warning:  PHP Startup: Unable to load dynamic library '/usr/lib/php/modules/mailparse.so' - /usr/lib/php/modules/mailparse.so: cannot open shared object file: No such file or directory in Unknown on line 0
Configuration File (php.ini) Path => /etc
Loaded Configuration File => /etc/php.ini

更新 2

我從中複製了 mailparse.so/opt/lampp/lib/php/extensions/no-debug-non-zts-20090626並將其放入/usr/lib/php/modules. 我也加extension=mailparse.so/etc/php.ini。但它仍然顯示這個警告

PHP Warning:  PHP Startup: Unable to load dynamic library ...  

正如 Lekensteyn 所說,我做到了

ldd /usr/lib/php/modules/mailparse.so

並得到

ldd: warning: you do not have execution permission for /usr/lib/php/modules/mailparse.so'

所以我給了執行權限。然後

ldd /usr/lib/php/modules/mailparse.so

顯示

linux-gate.so.1 => (0x00110000) libc.so.6 => /lib/libc.so.6 (0x0011d000) /lib/ld-linux.so.2 (0x003aa000)

這看起來很正常。但是現在,執行php命令說

PHP Warning: PHP Startup: Unable to load dynamic library '/usr/lib/php/modules/mailparse.so' - /usr/lib/php/modules/mailparse.so: undefined symbol: mbfl_name2no_encoding in Unknown on line 0

您是否已將擴展安裝到您的 PHP 命令行版本所期望的位置?

檢查extension_dir您的 /etc/php.ini 以查看它希望在哪裡找到擴展並將擴展安裝在那里或將其指向您的 Lampp PHP 擴展目錄(假設它是 PHP 的兼容版本)。

兩個 php.ini 都包含不同的extension_dir設置,/etc/php.ini似乎將其設置為,/usr/lib/php/modules而 LAMPP 將其設置為/opt/lampp/lib/php/extensions/no-debug-non-zts-20090626.

要使 Mailparse 為 LAMPP 工作,您還需要將 mailparse.so 複製到/opt/lampp/lib/php/extensions/no-debug-non-zts-20090626並添加extension=mailparse.so/opt/lampp/etc/php.ini。由於 PHP 每次執行都會載入 php.ini 文件,因此無需重新啟動電腦。

引用自:https://serverfault.com/questions/229124