2011-03-12 84 views
57

我運行一個PHP腳本,並得到這個錯誤:PHP的警告:PHP啓動:無法加載動態庫

PHP Warning: PHP Startup: Unable to load dynamic library '/usr/local/lib/php/extensions/no-debug-non-zts-20090626/ixed.5.2.lin' - /usr/local/lib/php/extensions/no-debug-non-zts-20090626/ixed.5.2.lin: cannot open shared object file: No such file or directory in Unknown on line 0

這是什麼意思?

回答

37

這意味着在你的PHP配置文件(php.ini中,或其他接近)正試圖加載擴展之一的extension=...zend_extension=...行:ixed.5.2.lin

不幸的文件或路徑不存在或權限不正確。

  1. 嘗試在由PHP加載(phpinfo()可以表明哪些是)的.ini文件中搜索 - 他們中的一個應該嘗試加載擴展。
  2. 糾正文件的路徑或註釋掉相應的行。
+6

所以我也收到這個錯誤,但我的網站仍然有效 - 這是最奇怪的部分。對於這種類型的錯誤,我假設php會從一開始就崩潰。相反,我得到我的頁面,但我的記錄器正在記錄此錯誤。怪怪的? – 2011-06-10 05:52:49

+0

謝謝。由於'phpinfo()'我擺脫了錯誤。 – Marwelln 2013-08-13 08:42:19

+1

在php.ini(我的例子是/etc/php.ini)中,我註釋掉了_extension = php_pdo_mysql.dll_並重新啓動了Apache,這解決了我的問題並擺脫了警告。 (Mac,Maverick) – ola 2014-01-10 12:05:44

28

如果你是在Linux上,你可以通過在shell中鍵入此找到所有加載配置文件:

php -r "print phpinfo();" | grep ".ini" 

UPDATE: 正如評論所說,這樣可以更準確:

php -i | grep ini 
+3

'php -i | grep ini'也應該可以正常工作(當你有一個命令參數時,不需要打印phpinfo) – YorickH 2015-10-07 10:03:39

+1

我有一個類似的錯誤,但'phpinfo()'沒有列出任何有問題的ini文件。 **'php -i | grep ini' **如[YorickH](http://stackoverflow.com/users/1026819/yorickh)建議爲我工作。這將列出爲CLI加載的庫,因爲在我的情況下,導致警告的ini文件在CLI目錄下。 – DaneeL 2015-11-14 17:10:14

+3

'php --ini'列出所有ini文件 – OzzyCzech 2016-08-24 11:34:15

10

如果您只是想讓錯誤消失,並且您不需要擴展名,那麼請務必在php.ini中註釋該行。但是,如果你真的想解決這個問題,這裏有一些額外的信息。

根據確切的模塊有多種原因,但也有一些一般的指導原則。

  1. 打開phpinfo()和下Core部分尋找extension_dir。這是你的模塊應該位於的地方。

For instance, /usr/lib/php/modules for Unix/Linux.

  • 如果文件事實上確實存在,確保權限是足夠的。
  • 如果該文件不存在,請使用下面的資源進行安裝。
  • Installation on *nix (PEAR)
    Installation of extensions on Windows

    +0

    我試圖通過這個pear模塊來安裝,但是當我運行'perl install '我得到了'無法打開perl腳本「安裝」:文件或目錄找不到' – Fabiotk 2016-12-03 14:28:39

    +0

    很難知道問題,請檢查您的路徑和權限。 – EternalHour 2016-12-04 22:36:51

    7

    phpStom與XAMPP

    TL; DR除了從驗證存在的文件,你可能需要添加驅動器號的一些記錄在你的PHP。 ini文件

    我突然開始有一個問題,使用phpStorm 7調試PHP與X ampp和xdebug。當嘗試設置的IntelliJ interperter是xampps PHP我得到了很多像一個在問題的警告,例如:

    Unable to load dynamic library '/xampp/php/ext/php_bz2.dll'

    出於某種原因,我有我的驅動器號添加到extension_dir中的記錄和browscap在php.ini文件:

    extension_dir = "\xampp\php\ext" 
    browscap = "\xampp\php\extras\browscap.ini" 
    

    extension_dir = "e:\xampp\php\ext" 
    browscap = "e:\xampp\php\extras\browscap.ini" 
    
    +0

    在Windows上? – 2017-10-03 11:48:44

    +1

    是的,你是對的 – Technotronic 2017-10-03 12:22:31

    +1

    這在Windows 10上爲我解決了這個問題。 – 2017-10-20 20:42:54

    2

    我有同樣的問題在XAMPP的Windows,當我嘗試安裝作曲家。 我做php -v和PHP投擲的錯誤:

    Unable to load dynamic library '/xampp/php/ext/php_bz2.dll'

    直到我意識到我需要設置我的XAMPP我花了一段時間。所以我運行setup_xampp.bat和php返回到像魅力一樣的作品。

    2

    請注意,如果您的PHP庫沒有「其他」目錄的開放權限,您也可以得到此錯誤。在我的特殊情況下,當使用php -l來語法檢查我的文本編輯器中的腳本時,我注意到了這一點。這意味着由於我的帳戶被稱爲「volomike」,該帳戶沒有權限運行php命令所依賴的庫。

    例如,在Ubuntu 14.04上,我將PHP5自動安裝到路徑/usr/lib/php5/20121212+lfs中。但是,因爲我使用C++來構建一些共享對象,所以我搞砸了目錄權限,並且搞砸了一些東西,使得非root帳戶沒有目錄execute(目錄打開)權限來查看/usr/lib/php5/20121212+lfs。因此,我輸入以下命令來糾正該問題:

    sudo chmod o+x /usr/lib/php5/20121212+lfs

    現在當我做php -l example.php作爲非root用戶時,它永遠不會給我這個「無法加載動態庫」的問題了。

    +0

    這是我使用Ubuntu 16.10的確切解決方案。請確保您使用Linux(標準配置給我的.dll)將擴展名「extension」更改爲.so – mroesler 2016-10-18 09:41:52

    +0

    我正在使用linux mint 18並且這仍然有效 – Dika 2017-02-13 16:17:45

    0

    我遇到了類似的錯誤。我犯的錯誤是在我的網址中使用「控制器」名稱作爲「頁面」而不是「頁面」。

    +0

    我懷疑這與問題有任何關係。 。 – Dennis98 2018-01-14 21:59:47

    2

    php -r "echo php_ini_loaded_file();"

    將顯示在CLI當前INI加載的文件,爲您的擴展搜索有,路徑是不正確。

    相關問題