PHP Предупреждение: запуск PHP: невозможно загрузить динамическую библиотеку
Я запускаю PHP script и получаю эту ошибку:
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: не удается открыть файл общих объектов: нет такого файла или каталога в Unknown в строке 0
Что это значит?
Ответы
Ответ 1
Это означает, что в одном из файлов конфигурации php (php.ini или другом рядом с ним) есть строка extension=...
или zend_extension=...
, которая пытается загрузить это расширение: ixed.5.2.lin
К сожалению, файл или путь не существует или права доступа неверны.
- Попробуйте выполнить поиск в файлах
.ini
, загружаемых PHP (phpinfo()
может указать, какие из них) - один из них должен попытаться загрузить это расширение.
- Либо исправьте путь к файлу, либо закомментируйте соответствующую строку.
Ответ 2
Если вы находитесь в Linux, вы можете найти все загруженные файлы конфигурации, набрав это в оболочке:
php -r "print phpinfo();" | grep ".ini"
UPDATE:
Как упоминалось в комментариях, это может быть еще более точным:
php -i | grep ini
Ответ 3
Если вы просто хотите, чтобы ошибка исчезла, и вам не требуется расширение, то непременно прокомментируйте строку в php.ini
. Но если вы действительно хотите исправить проблему, вот дополнительная информация.
Для этого существуют различные причины, основанные на точном модуле, но также есть некоторые общие рекомендации.
- Откройте
phpinfo()
и найдите extension_dir
в разделе Core
. Здесь должны находиться ваши модули.
Например, /usr/lib/php/modules
для Unix/Linux.
- Если файл действительно существует, убедитесь, что разрешения являются адекватными.
- Если файл не существует, используйте его ниже, чтобы установить его.
Установка на * nix (PEAR)
Установка расширений в Windows
Ответ 4
phpStom с XAMPP
TL; DR Кроме проверки того, что файлы существуют, вам может потребоваться добавить букву диска к некоторым записям в файле php.ini
У меня внезапно возникла проблема с использованием phpStorm 7 для отладки php с помощью xampp и xdebug. При попытке установить intellij interperter как xampps php, я получил много предупреждений, подобных тем, которые были в вопросе, например:
Невозможно загрузить динамическую библиотеку '/xampp/php/ext/php_bz2.dll'
По какой-то причине мне пришлось добавить букву диска в записи extension_dir и броузера в файле php.ini:
extension_dir = "\xampp\php\ext"
browscap = "\xampp\php\extras\browscap.ini"
to
extension_dir = "e:\xampp\php\ext"
browscap = "e:\xampp\php\extras\browscap.ini"
Ответ 5
php -r "echo php_ini_loaded_file();"
Будет отображаться в текущем загруженном файле CLI, искать там для вашего расширения, путь к нему неверен.
Ответ 6
Обратите внимание, что вы также можете получить эту ошибку, если ваша библиотека PHP не имеет разрешения на открытие "другого" каталога. В моем конкретном случае я заметил это при использовании php -l
для синтаксиса проверки script в текстовом редакторе. Это означало, что, поскольку моя учетная запись называлась "volomike", у этой учетной записи не было разрешения на запуск библиотек, на которые полагалась команда php
.
Например, на Ubuntu 14.04 я автоматически установил PHP5 на путь /usr/lib/php5/20121212+lfs
. Однако, поскольку я работал на С++ в создании некоторых общих объектов, я перепутал с разрешениями каталога и прикрутил вещи, чтобы у учетных записей, отличных от root, не было разрешений для запуска каталога (каталога) для просмотра /usr/lib/php5/20121212+lfs
. Итак, я набрал следующую команду, чтобы исправить эту проблему:
sudo chmod o+x /usr/lib/php5/20121212+lfs
.
Теперь, когда я выполняю php -l example.php
как пользователь, не являющийся пользователем root, он больше не дает мне эту проблему "Не загружать динамическую библиотеку".
Ответ 7
Загрузка.dll в Linux
Я столкнулся с этим предупреждающим сообщением, когда пытался установить расширение php- через файл php.ini;
пока я не понял, что вы не можете загружать расширения .dll в Linux,
но вы должны прокомментировать расширения, которые вы хотите импортировать ;extension=....dll
и установить его правильно через sudo apt-get install php-...
note: ...
это расширение, которое вы хотите включить.
Ответ 8
У меня была такая же проблема для XAMPP для Windows, когда я пытаюсь установить композитор.
Я сделал ошибку php -v
и php throwing:
Невозможно загрузить динамическую библиотеку '/xampp/php/ext/php_bz2.dll'
Мне потребовалось некоторое время, пока я не понял, что мне нужно настроить мой XAMPP. Поэтому я запускаю setup_xampp.bat
и php возвращаются к работам как шарм.
Ответ 9
После 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
пока я не прокомментировал "" в /opt/lampp/etc/php.ini
.
Похоже, XAMPP читает файл php.ini
из /etc/php/7.2/cli
и вносит изменения в php.ini
из /opt/lampp/etc
(; extension = php_pdo_mysql.dll после ";" перезапустил Apache и больше никаких сообщений.
Ответ 10
Я столкнулся с подобной ошибкой. Ошибка, которую я сделал, заключалась в том, чтобы использовать имя "контроллер" как "Страницы" вместо "страниц" в моем URL-адресе.
Ответ 11
У меня была эта ошибка для ряда модулей, когда я работал на разных версиях 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
Ответ 12
В Windows это может быть неправильный путь в "Системных переменных среды".
"Путь" к каталогу php.exe должен быть хорошим.