Cảnh báo PHP: Khởi động PHP: Không thể tải thư viện động


95

Tôi chạy một tập lệnh PHP và gặp lỗi này:

Cảnh báo PHP: Khởi động PHP: Không thể tải thư viện động '/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: không thể mở tệp đối tượng được chia sẻ: Không có tệp hoặc thư mục nào như vậy trong Không xác định trên dòng 0

Điều đó nghĩa là gì?

Câu trả lời:


56

Nó có nghĩa là có một extension=...hoặc một zend_extension=...dòng trong một trong các tệp cấu hình php của bạn (php.ini hoặc một tệp khác gần với nó) đang cố gắng tải tiện ích mở rộng đó:ixed.5.2.lin

Rất tiếc, tệp hoặc đường dẫn đó không tồn tại hoặc các quyền không chính xác.

  1. Cố gắng tìm kiếm trong các .initệp được tải bằng PHP ( phpinfo()có thể cho biết đó là tệp nào ) - một trong số chúng nên thử tải phần mở rộng đó.
  2. Sửa lại đường dẫn đến tệp hoặc nhận xét dòng tương ứng.

6
Vì vậy, tôi cũng gặp lỗi này, nhưng trang web của tôi vẫn hoạt động - đó là phần kỳ lạ nhất. Đối với loại lỗi này, tôi cho rằng php sẽ bị lỗi ngay từ đầu. Thay vào đó, tôi nhận được trang của mình, nhưng trình ghi nhật ký của tôi đang ghi lại lỗi này. Kỳ lạ phải không?
BT

1
Trong php.ini (/etc/php.ini trong trường hợp của tôi), tôi đã nhận xét phần mở rộng dòng = php_pdo_mysql.dll và khởi động lại Apache đã giải quyết được sự cố của tôi và loại bỏ các cảnh báo. (Mac, Maverick)
ola

Hoặc sửa lại con đường mà chúng ta đang nói về con đường nào?
prats1411,

3. hoặc cài đặt phần mở rộng dự kiến ​​bị thiếu
Andrew

@ prats1411 trong tệp ini: extension = [đường dẫn tại đây]
Andrew

37

Nếu bạn đang sử dụng Linux, bạn có thể tìm thấy tất cả các tệp cấu hình đã tải bằng cách nhập vào shell:

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

CẬP NHẬT: Như đã đề cập trong nhận xét, điều này thậm chí có thể chính xác hơn:

php -i | grep ini

5
php -i | grep ininên hoạt động tốt quá (không cần phải in phpinfo khi bạn có một đối số lệnh cho điều đó)
YorickH

1
Tôi đã gặp lỗi tương tự nhưng phpinfo()không liệt kê bất kỳ tệp ini nào có vấn đề. php -i | grep ininhư được gợi ý bởi YorickH đã làm việc cho tôi. Điều này sẽ liệt kê các thư viện được tải cho CLI và vì nó hóa ra tệp ini gây ra cảnh báo nằm trong thư mục CLI trong trường hợp của tôi.
DaneeL

7
những gì về php --iniđể liệt kê tất cả các file ini
OzzyCzech

17

Nếu bạn chỉ muốn làm cho lỗi biến mất và bạn không cần tiện ích mở rộng, thì bằng mọi cách, hãy bình luận dòng ra php.ini. Nhưng nếu bạn thực sự muốn khắc phục sự cố thì đây là một số thông tin bổ sung.

Có nhiều nguyên nhân khác nhau cho điều này dựa trên mô-đun chính xác, nhưng cũng có một số nguyên tắc chung.

  1. Mở phpinfo()và tìm kiếm extension_dirdưới Corephần. Đây là nơi các mô-đun của bạn nên được đặt.

Ví dụ, /usr/lib/php/modulescho Unix / Linux.

  1. Nếu tệp thực sự tồn tại, hãy đảm bảo các quyền đầy đủ.
  2. Nếu tệp không tồn tại, hãy sử dụng các tài nguyên bên dưới để cài đặt nó.

Cài đặt trên * nix (PEAR)
Cài đặt các tiện ích mở rộng trên Windows


Tôi đang cố gắng để cài đặt thông qua mô-đun lê này nhưng khi tôi chạy perl install <module>tôiCan't open perl script "install": File or Directory not found
Fabiotk

Rất khó để biết vấn đề, kiểm tra đường dẫn và quyền của bạn.
EternalHour

nếu trong một container, hãy thửdocker-php-ext-install <package>
jiggunjer

13

phpStom với XAMPP

TL; DR Ngoại trừ việc xác minh rằng các tệp tồn tại, bạn có thể cần thêm ký tự ổ đĩa vào một số bản ghi trong tệp php.ini của mình

Tôi đột nhiên bắt đầu gặp sự cố khi sử dụng phpStorm 7 để gỡ lỗi php với xampp và xdebug. Khi cố gắng thiết lập intellij interperter thành xampps php, tôi nhận được rất nhiều cảnh báo như cảnh báo trong câu hỏi, ví dụ:

Không thể tải thư viện động '/xampp/php/ext/php_bz2.dll'

Vì một số lý do, tôi phải thêm ký tự ổ đĩa của mình vào các bản ghi của extension_dir và browscap trong tệp php.ini:

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

đến

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

2
Đây cố định nó cho tôi trên Windows 10
Justin Eldracher

1
Điều này đã sửa nó cho tôi trên windows 7. Cảm ơn rất nhiều
Paramjeet

6

php -r "echo php_ini_loaded_file();"

Sẽ hiển thị trong CLI tệp được tải ini hiện tại, hãy tìm kiếm ở đó phần mở rộng của Bạn, đường dẫn đến nó không chính xác.


4

Đang tải .dll trong Linux

Tôi đã gặp thông báo cảnh báo này khi đang cố cài đặt phần mở rộng php thông qua tệp php.ini ;

cho đến khi tôi phát hiện ra rằng bạn không thể tải các phần mở rộng .dll trong Linux,

nhưng bạn phải nhận xét các tiện ích mở rộng mà bạn muốn nhập ;extension= ... .dllcài đặt nó một cách chính xác quasudo apt-get install php-...

ghi chú : ...là tên tiện ích mở rộng bạn muốn bật.


Chính xác, đối với tôi nó đã được chỉ đơn giản là mất tích lắp đặt mô-đun - Tôi đã cài đặt phpPgAdmin và những gì tôi cần phải cài đặt một cách rõ ràng là sudo apt install php-pgsqlvà php-phiên bản cụ thể sudo apt install php7.1-pgsql(thay đổi 7.1 lên phiên bản php của bạn)
jave.web

3

Lưu ý rằng bạn cũng có thể gặp lỗi này nếu thư viện PHP của bạn không có quyền mở thư mục "khác". Trong trường hợp cụ thể của tôi, tôi nhận thấy điều này khi sử dụng php -lđể kiểm tra cú pháp một tập lệnh trong trình soạn thảo văn bản của tôi. Điều này có nghĩa là vì tài khoản của tôi được gọi là "volomike", tài khoản đó không có quyền chạy các thư viện mà phplệnh dựa vào.

Ví dụ: trên Ubuntu 14.04, tôi đã cài đặt PHP5 tự động vào đường dẫn /usr/lib/php5/20121212+lfs. Tuy nhiên, vì tôi đang làm việc trong C ++ trong việc xây dựng một số đối tượng được chia sẻ, tôi đã nhầm lẫn với các quyền của thư mục và làm mọi thứ rối tung lên đến mức các tài khoản không phải root không có quyền thực thi thư mục (thư mục mở) để xem./usr/lib/php5/20121212+lfs . Vì vậy, tôi đã nhập lệnh sau để khắc phục sự cố đó:

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

Bây giờ khi tôi làm php -l example.phpvới tư cách là người dùng không phải root, nó không bao giờ mang lại cho tôi vấn đề "Không được phép tải thư viện động" này nữa.


Đây là giải pháp chính xác cho tôi, sử dụng Ubuntu 16.10. Hãy chắc chắn rằng bạn thay đổi phần mở rộng "mở rộng" để .so khi sử dụng Linux (config chuẩn bị cho tôi Dll)
mroesler

Tôi đang sử dụng linux mint 18 và điều này vẫn còn hiệu lực
Dika

2

Tôi đã gặp vấn đề tương tự trên XAMPP dành cho Windows khi cố gắng cài đặt trình tổng hợp. Tôi đã làm php -vvà lỗi ném php:

Không thể tải thư viện động '/xampp/php/ext/php_bz2.dll'

Tôi mất một lúc cho đến khi nhận ra rằng mình cần thiết lập XAMPP của mình. Vì vậy, tôi chạy setup_xampp.batvà php trở lại hoạt động như một cái duyên.


2

Tôi đã gặp vấn đề tương tự trên XAMPP dành cho Windows10 khi tôi cố gắng cài đặt trình tổng hợp.

Không thể tải thư viện động '/xampp/php/ext/php_bz2.dll'

Sau đó làm theo các bước sau

  1. chỉ cần mở current_xampp_containing_drive của bạn: \ xampp (default_xampp_folder) \ php \ php.ini trong texteditor (như notepad ++)
  2. bây giờ chỉ cần tìm - current_xampp_contain_drive: \ xampp có tồn tại không?
  3. nếu không thì hãy tìm "extension_dir" và lấy tên ổ (c, d hoặc ổ mong muốn của bạn) như thế nào.

extension_dir = "F: \ xampp731 \ php \ ext" (ở đây finded_drive_name_from_the_file là F)

  1. lại thay thế bằng finded_drive_name_from_the_file: \ xampp bằng current_xampp_contain_drive: \ xampp và lưu.
  2. bây giờ một lần nữa bắt đầu tiến trình cài đặt trình soạn nhạc, tôi nghĩ rằng vấn đề của bạn sẽ được giải quyết.

1

Tôi đã gặp lỗi này trên một số mô-đun khi chạy các phiên bản PHP khác nhau song song trên máy chủ của mình. Để giải quyết vấn đề này, tôi cần cài đặt các gói mà nó không thể tìm thấy cho phiên bản PHP cụ thể đó. Vì vậy, ví dụ, nếu tôi thấy: -

PHP Warning:  PHP Startup: Unable to load dynamic library '/usr/lib/php/20160303/xml.so'

Tôi sẽ cài đặt thư viện cho phiên bản PHP cụ thể: -

sudo apt-get install php7.1-xml

Và sau đó khởi động lại Apache. Đã sửa nó cho tôi. Bạn có thể kiểm tra phiên bản của mình như sau: -

php -v

1

Sau đó, Windows 10 XAMPPtôi đã cài đặt LAMPP (XAMPP)trên Ubuntu. Windows XAMPPcó ít hơn rất nhiều để cấu hình so với MAC (iOS) nhưng bây giờ với Linux Ubuntu, tôi đã có thêm một vài thứ vì có nhiều thứ hơn trong Linux (một điều tốt).

Tôi đã nhầm lẫn và kích hoạt mysqli.dll(và mysql.dll: xóa "#" trong/etc/php/7.2/cli/php.ini

Tôi bắt đầu nhận được PHP Warning: PHP Startup: Unable to load dynamic librarytin nhắn liên quan đến dll. Tôi đã nhận xét mysql(and i).dlltrong cùng một tệp nhưng thông báo không biến mất cho đến khi tôi nhận xét "" trong /opt/lampp/etc/php.ini.

Trông giống như XAMPP đọc php.initập tin từ /etc/php/7.2/clivà làm cho sự điều chỉnh trong php.inicác /opt/lampp/etc. (; extension = php_pdo_mysql.dll sau khi ";" khởi động lại Apache và không có bất kỳ thông báo nào nữa.


1

Trong trường hợp của tôi, tôi gặp lỗi này vì tôi đã tải xuống phiên bản dll an toàn theo luồng (được gắn với -ts-), nhưng bản cài đặt php của tôi là php không an toàn (được gắn với -nts-). Tải xuống phiên bản dll phù hợp, khớp chính xác với phiên bản cài đặt php của tôi đã khắc phục sự cố.


1
Để kiểm tra cấu hình an toàn luồng máy chủ, hãy xem phpinfo () và thread-safetyđã bật / tắt. Cũng gặp lỗi ngược lại, các nts đã tải xuống khi được định cấu hình cho ts.
Andy

0

Tôi gặp một lỗi tương tự. Sai lầm mà tôi đã mắc phải là sử dụng tên "controller" là "Pages" thay vì "pages" trong url của mình.


0

Trong Windows, nó có thể là một đường dẫn sai trong "Biến môi trường hệ thống". "Đường dẫn" đến thư mục php.exe phải là đường dẫn tốt.


0

Tìm kiếm phần mở rộng chính xác cho phiên bản PHP của bạn tại đây


1
Tại sao Microsoft Drivers cho PHP cho SQL Server? Đó không phải là những gì câu hỏi này là về!
csabinho

0

Những gì tôi đã làm là;

1 - Đầu tiên tôi tìm ra phiên bản PHP mà tôi đang sử dụng thông qua hàm phpinfo ()

<?php   
    phpinfo();
?>

2 - Từ đó bạn sẽ tìm thấy vị trí của tệp cấu hình (php.ini) của mình

method phpinfo () kết quả

3 - Mở tệp đó

4 - Comment ra dòng tương tự như hình ảnh bên dưới

Đây có thể là một giá trị khác nhưng nó phải liên quan đến phần mở rộng. Tôi không phải là chuyên gia nhưng quá trình này đã giúp tôi giải quyết vấn đề tương tự.

nhập mô tả hình ảnh ở đây


0

'C: /PHP/5.2.13/ext \ php_mcrypt1.dll'

Tôi muốn nói rằng có một số lỗi đánh máy trên php.ini của bạn (phần bổ sung 1). Có lẽ bạn đang tải một php.ini khác với những gì bạn mong đợi (hãy xem đầu ra của php.ini để đảm bảo).

Ngoài ra, hãy đảm bảo rằng php_mcrypt.dll và PHP:

Được liên kết với cùng một thư viện thời gian chạy VC (thường là msvcrt.dll cho VC6 hoặc msvcrt90.dll cho VC9) - sử dụng ví dụ: bộ đi phụ thuộc cho việc này. các thư viện khác (DLL), hãy đảm bảo chúng có sẵn (ví dụ: trong cùng thư mục với phần mở rộng) PHP sẽ cung cấp cho bạn các lỗi có ý nghĩa nếu bất kỳ điều kiện nào trong ba điều kiện đầu tiên ở trên không được thỏa mãn, nhưng tôi vẫn viết những điều kiện đó vì tôi không chắc cho PHP 5.2.


-1

Tôi đã gặp sự cố tương tự và dưới đây là một số cảnh báo / lỗi.

Warning: PHP Startup: Unable to load dynamic library 'curl' (tried: C:\php\ext\curl 
(The specified module could not be found.), C:\php\ext\php_curl.dll (The specified 
module 
could not be found.)) in Unknown on line 0

Warning: PHP Startup: Unable to load dynamic library 'fileinfo' (tried: 
C:\php\ext\fileinfo (The specified module could not be found.), 
C:\php\ext\php_fileinfo.dll (The specified module could not be found.)) in Unknown on 
line 0

Nếu bạn kiểm tra các cảnh báo, bạn sẽ thấy rằng nó đang tìm kiếm các phần mở rộng php trong C:\php\ext\đó, tôi đã tải php vào C:\thư mục và điều đó đã giải quyết được vấn đề.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.