Предупреждение PHP: запуск PHP: невозможно загрузить динамическую библиотеку


101

Я запускаю 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

Что это значит?

Ответы:


57

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

К сожалению, этот файл или путь не существует или разрешения неверны.

  1. Попробуйте выполнить поиск в .iniфайлах, загружаемых PHP ( phpinfo()можно указать, какие именно) - один из них должен попытаться загрузить это расширение.
  2. Исправьте путь к файлу или закомментируйте соответствующую строку.

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

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

Либо поправьте путь, о каком пути идет речь?
prats1411

3. или установите отсутствующее ожидаемое расширение
Эндрю

@ prats1411 в ini-файле: extension = [путь здесь]
Эндрю

38

Если вы работаете в 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

8
как насчет того, 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 03

Сложно узнать проблему, проверьте свои пути и разрешения.
EternalHour

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

Это помогло мне найти это в php.ini, а затем увидеть, что папка пуста.
Франкфурт-Ларавель,

15

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
Это исправило для меня это на Windows 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специфичным sudo apt install php7.1-pgsqlдля версии php (измените 7.1 на свою версию php)
jave.web

3

Обратите внимание, что вы также можете получить эту ошибку, если ваша библиотека PHP не имеет разрешения на открытие каталога «другой». В моем конкретном случае я заметил это при использовании php -lдля проверки синтаксиса скрипта в моем текстовом редакторе. Это означало, что, поскольку моя учетная запись называлась «volomike», у этой учетной записи не было разрешения на запуск библиотек, на которые phpполагалась команда.

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

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

Теперь, когда я делаю это php -l example.phpкак пользователь без полномочий root, у меня больше никогда не возникает проблема «Невозможно загрузить динамическую библиотеку».


Для меня это было точное решение с использованием Ubuntu 16.10. Убедитесь, что вы изменили расширение «extension» на .so при использовании Linux (стандартная конфигурация давала мне .dll)
mroesler

Я использую linux mint 18, и это все еще актуально
Дика

2

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

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

Мне потребовалось некоторое время, пока я не понял, что мне нужно настроить свой XAMPP. Итак, я бегу, setup_xampp.batи php return работает как шарм.


2

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

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

Затем выполните следующие действия

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

extension_dir = "F: \ xampp731 \ php \ ext" (здесь имя_файла_исключенного_диска_ из_файла равно F)

  1. снова замените на finded_drive_name_from_the_file: \ xampp на current_xampp_conpting_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.


0

В моем случае это сообщение начало появляться, когда я обновил версию php до 7.4.

Чтобы решить эту проблему, мне пришлось искать файлы php.ini, найденные в папке версии php (/etc/php/7.4/apache2/ && /etc/php/7.4/cli/), проверяя строки, в которых расширения я мог видеть, что расширения gd2 и intl были раскомментированы.


0

Из C: \ xampp \ php \ php.exe я получил

  • Невозможно загрузить динамическую библиотеку ''
  • C: \ xampp \ php \ ext \ php_.dll (указанный модуль не найден.)

Я решил,
закомментировав C: \ xampp \ php \ php.ini
; extension =


-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.