Попередження PHP: Запуск PHP: Не вдається завантажити динамічну бібліотеку


94

Я запускаю PHP-скрипт і отримую таку помилку:

Попередження PHP: Запуск PHP: Не вдається завантажити динамічну бібліотеку '/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: не вдається відкрити спільний файл об’єкта: Немає такого файлу або каталогу у Невідомому в рядку 0

Що це означає?

Відповіді:


55

Це означає, що в одному з ваших файлів конфігурації php (php.ini або інший поруч з ним) є рядок extension=...або, який намагається завантажити це розширення:zend_extension=...ixed.5.2.lin

На жаль, цей файл або шлях не існує або дозволи неправильні.

  1. Спробуйте здійснити пошук у .iniфайлах, завантажених PHP ( phpinfo()може вказати, які саме) - один із них повинен спробувати завантажити це розширення.
  2. Або виправте шлях до файлу, або прокоментуйте відповідний рядок.

6
Тож я теж отримую цю помилку, але мій сайт все ще працює - це найдивніша частина. Для такого типу помилок, я б припустив, що php вийде з ладу з самого початку. Натомість я отримую свою сторінку, але мій реєстратор реєструє цю помилку. Дивно, а?
BT

1
У php.ini (/etc/php.ini у моєму випадку) я прокоментував розширення рядка = php_pdo_mysql.dll та перезапустив Apache, який вирішив мою проблему та позбувся попереджень. (Mac, Maverick)
ола

Або виправте шлях, про який шлях ми говоримо?
prats1411

3. або встановіть відсутнє очікуване розширення
Ендрю

@ prats1411 у файлі ini: extension = [шлях сюди]
Ендрю

37

Якщо ви працюєте на Linux, ви можете знайти всі завантажені файли конфігурації, ввівши це в оболонку:

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

ОНОВЛЕННЯ: Як зазначалося в коментарях, це може бути ще точніше:

php -i | grep ini

5
php -i | grep iniтеж повинен працювати нормально (не потрібно друкувати phpinfo, коли для цього є аргумент команди)
YorickH

1
У мене була подібна помилка, але я phpinfo()не вказав жодних проблемних файлів ini. php -i | grep iniяк запропонував YorickH, працював у мене. Тут буде перелічено бібліотеки, завантажені для CLI, і, як виявилося, файл ini, який спричинив попередження, в моєму випадку знаходився в каталозі CLI.
DaneeL

7
про php --iniщо перерахувати всі файли ini
OzzyCzech

17

Якщо ви просто хочете, щоб помилка зникла, і вам не потрібне розширення, тоді неодмінно прокоментуйте рядок php.ini. Але якщо ви дійсно хочете усунути проблему, ось додаткова інформація.

Існують різні причини цього, засновані на точному модулі, але є також деякі загальні рекомендації.

  1. Відкрити phpinfo()і шукати extension_dirпід Coreсекцією. Тут повинні знаходитися ваші модулі.

Наприклад, /usr/lib/php/modulesдля Unix / Linux.

  1. Якщо файл насправді існує, переконайтеся, що дозволи достатні.
  2. Якщо файл не існує, використовуйте наведені нижче ресурси, щоб встановити його.

Встановлення на * nix (PEAR)
Встановлення розширень на Windows


Я намагаюся встановити через цей модуль груші, але коли я запустив, perl install <module>я отримавCan't open perl script "install": File or Directory not found
Fabiotk

Важко знати проблему, перевірити свої шляхи та дозволи.
EternalHour

якщо в контейнері спробуйтеdocker-php-ext-install <package>
jiggunjer

13

phpStom із XAMPP

TL; DR За винятком перевірки наявності файлів, можливо, вам доведеться додати букву диска до деяких записів у вашому файлі php.ini

У мене раптом почалася проблема з використанням phpStorm 7 для налагодження php за допомогою xampp та xdebug. При спробі встановити intellij interperter як xampps php, я отримав багато попереджень, подібних до запитаного, наприклад:

Не вдається завантажити динамічну бібліотеку '/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"

2
Для мене це виправлено у Windows 10.
Джастін Елдрачер

1
Це виправлено для мене на вікнах 7. Велике спасибі
Парамеет

6

php -r "echo php_ini_loaded_file();"

Показуватиме в CLI поточний завантажений файл ini, шукайте там своє розширення, шлях до нього неправильний.


4

Завантаження .dll в Linux

Я зіткнувся з цим попереджувальним повідомленням під час спроби встановити розширення php через файл php.ini ;

поки я не зрозумів, що ви не можете завантажити розширення .dll в Linux,

але ви повинні прокоментувати розширення, які ви хочете імпортувати, ;extension= ... .dllі правильно встановити черезsudo apt-get install php-...

Примітка : ...це назва розширення, яке потрібно ввімкнути.


Точно для мене просто не вистачало встановлення модуля - я встановлював phpPgAdmin, і те, що мені потрібно було встановити явно, було sudo apt install php-pgsqlспецифічним для php-версії sudo apt install php7.1-pgsql(змінити 7.1 на вашу php-версію)
jave.web

3

Зверніть увагу, що ви також можете отримати цю помилку, якщо ваша бібліотека PHP не має дозволу на відкриття каталогу "інші". У моєму конкретному випадку я помітив це, використовуючи php -lдля перевірки синтаксису скрипт у моєму текстовому редакторі. Це означало, що оскільки мій акаунт називався "volomike", той акаунт не мав дозволу запускати бібліотеки, на які phpпокладалася команда.

Наприклад, на Ubuntu 14.04 я автоматично встановив PHP5 у шлях /usr/lib/php5/20121212+lfs. Однак, оскільки я працював на C ++ над створенням деяких спільних об'єктів, я переплутався з дозволами на каталог і зіпсував справи так, що некореневі облікові записи не мали дозволу на виконання каталогу (відкритого каталогу) для перегляду /usr/lib/php5/20121212+lfs. Отже, я набрав таку команду, щоб виправити цю проблему:

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

Тепер, коли я php -l example.phpпрацюю як некорневий користувач, це більше не дає мені цієї проблеми "Неможливо завантажити динамічну бібліотеку".


Це було точне рішення для мене, використовуючи Ubuntu 16.10. Переконайтеся, що ви змінили розширення "розширення" на .so при використанні Linux (стандартна конфігурація давала мені .dll)
mroesler

Я використовую linux mint 18, і це все ще діє
Діка

2

У мене була та сама проблема на XAMPP для Windows, коли я намагався встановити composer. Я зробив php -vі помилку підкидання php:

Не вдається завантажити динамічну бібліотеку '/xampp/php/ext/php_bz2.dll'

Це зайняло деякий час, поки я не зрозумів, що мені потрібно налаштувати свій XAMPP. Тож я запускаю setup_xampp.batі php повертається до робіт як шарм.


2

У мене була та ж проблема на XAMPP для Windows10, коли я намагався встановити composer.

Не вдається завантажити динамічну бібліотеку '/xampp/php/ext/php_bz2.dll'

Потім виконайте ці дії

  1. просто відкрийте поточний_xampp_containing_drive: \ xampp (default_xampp_folder) \ php \ php.ini у texteditor (наприклад, notepad ++)
  2. тепер просто знайдіть - чи існує current_xampp_containing_drive: \ xampp?
  3. якщо ні, то знайдіть "extension_dir" і отримайте назву диска (c, d або бажаний диск), наприклад.

extension_dir = "F: \ xampp731 \ php \ ext" (тут finded_drive_name_from_the_file - F)

  1. знову замінити на finded_drive_name_from_the_file: \ xampp на current_xampp_containing_drive: \ xampp та зберегти.
  2. Тепер знову запустіть процес встановлення композитора, я думаю, ваша проблема буде вирішена.

1

У мене сталася ця помилка в ряді модулів, коли я запускав різні версії PHP поруч на своєму сервері. Щоб розібратися в цьому, мені потрібно було встановити пакети, які він не знайшов для цієї конкретної версії PHP. Так, наприклад, якщо я побачив: -

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

Я б спеціально встановив бібліотеку для версії PHP: -

sudo apt-get install php7.1-xml

А потім перезапустіть Apache. Виправив це для мене. Ви можете перевірити свою версію таким чином: -

php -v

1

Після Windows 10 XAMPPцього я встановив LAMPP (XAMPP)на Ubuntu. Windows XAMPPбуло набагато менше для налаштування порівняно з MAC (iOS), але тепер з Linux Ubuntu у мене було ще кілька, оскільки в Linux все більше відбувається (добре).

Я переплутав і активував mysqli.dll(і mysql.dll: стерти "#" в/etc/php/7.2/cli/php.ini

Я почав отримувати PHP Warning: PHP Startup: Unable to load dynamic libraryповідомлення, пов’язане з dll. Я прокоментував mysql(and i).dllу тому ж файлі, але повідомлення не зникло, доки я не прокоментував "" в/opt/lampp/etc/php.ini .

Схоже, XAMPP зчитує php.iniфайл із файлу /etc/php/7.2/cliта вносить зміни php.iniдо нього /opt/lampp/etc. (; extension = php_pdo_mysql.dll після ";" перезапустив Apache і більше жодного повідомлення.


1

У моєму випадку я отримав цю помилку, оскільки завантажив безпечну для потоку версію dll (інфіксовану -ts-), але моя php-установка php не була поточно безпечною (інфіксована -nts-). Завантаживши правильну версію dll, точно відповідаючи моїй версії встановлення php, проблема виправлена.


1
Щоб перевірити безпечну конфігурацію сервера, див. Phpinfo () та thread-safetyувімкнено / вимкнено. Мав ту саму помилку в зворотному порядку, завантажував nts при налаштуванні на ts.
Енді

0

Я зіткнувся з подібною помилкою. Помилкою, яку я зробив, було використання назви "контролера" як "Сторінки" замість "сторінки" в моїй URL-адресі.


0

У Windows це може бути неправильний шлях у "Змінні системного середовища". "Шлях" до каталогу php.exe повинен бути правильним.



0

Те, що я зробив, було;

1 - Я спочатку дізнаюся, яку версію PHP я використовую за допомогою функції phpinfo ()

<?php   
    phpinfo();
?>

2 - Звідти ви знайдете розташування вашого файлу конфігурації (php.ini)

метод phpinfo () результат

3 - Відкрийте цей файл

4 - Прокоментуйте рядок, схожий на малюнок нижче

Це може бути інше значення, але воно повинно бути пов’язане з розширенням. Я не фахівець, але цей процес допоміг мені вирішити подібну проблему.

введіть тут опис зображення


0

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

Я б сказав, що на вашому php.ini є додаткова помилка (додатковий 1). Можливо, ви завантажуєте інший файл php.ini від того, що очікували (переконайтеся, що результат роботи php.ini).

Крім цього переконайтесь, що php_mcrypt.dll та PHP:

Були пов’язані з однією і тією ж бібліотекою виконання VC (зазвичай msvcrt.dll для VC6 або msvcrt90.dll для VC9) - використовуйте, наприклад, ходунок залежностей для цього. Це обидві збірки налагодження або обидві збірки випусків В обох увімкнено ZTS або ZTS вимкнено Для бібліотек, які залежать від подальші бібліотеки (DLL), переконайтесь, що вони доступні (наприклад, в тому самому каталозі, що і розширення) PHP повинен видавати вам помилки, якщо будь-яка з перших трьох наведених вище умов не виконується, але я все одно написав їх, бо не впевнений для PHP 5.2.


-1

У мене була подібна проблема, і нижче наведено деякі попередження / помилки.

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

Якщо ви переглянете попередження, ви побачите, що він шукає розширення php у C:\php\ext\тому, що я завантажив php до C:\каталогу, і це вирішило проблеми.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.