問題
當在指令行運作PHP的CLI版本時,您可能會收到類似以下錯誤:
[root@myserver /root]$ php -v
PHP Warning: Module 'pcre' already loaded in Unknown on line 0
PHP Warning: PHP Startup: Unable to load dynamic library '/usr/local/php5/lib/php/extensions/no-debug-non-zts-20060613/spl.so' - /usr/local/php5/lib/php/extensions/no-debug-non-zts-20060613/spl.so: Undefined symbol "pcre_exec" in Unknown on line 0
PHP Warning: Module 'SimpleXML' already loaded in Unknown on line 0
PHP Warning: Module 'session' already loaded in Unknown on line 0
PHP Warning: Module 'exif' already loaded in Unknown on line 0
PHP 5.2.3 (cli) (built: Jun 14 2007 15:29:17)
Copyright (c) 1997-2007 The PHP Group
Zend Engine v2.2.0, Copyright (c) 1998-2007 Zend Technologies
原因
在PHP中對于大多數擴充而言加載有兩種方法。一種是直接編譯擴充到PHP二進制檔案。另一種是通過一個ini檔案動态加載的共享擴充。這些錯誤表明,動态擴充正在通過.ini檔案加載,即使它們已經被編譯到PHP二進制檔案中。
修複
要解決此問題,您必須編輯你的php.ini(或extensions.ini檔案)檔案并注釋掉那些已經編譯的擴充。例如,修改完成後,你的ini檔案修改完可能看起來像下面這幾行:
;extension=pcre.so
;extension=spl.so
;extension=simplexml.so
;extension=session.so
;extension=exif.so
當然你也可以删除這些行,而不是注釋掉。一但你注釋或删除掉這些行,再運作php
-v 警告消失。
附加資訊
要了解哪些擴充已經編譯到你的PHP中,運作以下指令:
php -m
您還可以檢視configure指令,它會顯示通過編譯、建成共享或動态子產品啟動的擴充。
php -i | grep Configure
動态擴充通常位于一個特殊的“extensions”的檔案夾中,其會根據作業系統環境而變化。你的php.ini通常有一行會顯示這個說明檔案夾。例如:
Directory in which the loadable extensions (modules) reside.
extension_dir = "/usr/local/php5/lib/php/extensions/no-debug-non-zts-20060613/"
原文連接配接
http://www.somacon.com/p520.php