對 cli 的 php.ini 所做的更改未生效
我有兩個
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 文件,因此無需重新啟動電腦。