天天看點

PHP Warning: Module 'modulename' already loaded in Unknown on line 0問題 原因修複附加資訊

問題

當在指令行運作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