[email protected]:/etc/php5/apache2# php -a
PHP Warning: PHP Startup: Unable to load dynamic library '/usr/lib/php5/20090626+lfs/curl.so' - /usr/lib/php5/20090626+lfs/curl.so: cannot open shared object file: No such file or directory in Unknown on line 0
PHP Warning: PHP Startup: Unable to load dynamic library '/usr/lib/php5/20090626+lfs/mcrypt.so' - /usr/lib/php5/20090626+lfs/mcrypt.so: cannot open shared object file: No such file or directory in Unknown on line 0
PHP Warning: PHP Startup: Unable to load dynamic library '/usr/lib/php5/20090626+lfs/mysql.so' - /usr/lib/php5/20090626+lfs/mysql.so: cannot open shared object file: No such file or directory in Unknown on line 0
PHP Warning: PHP Startup: Unable to load dynamic library '/usr/lib/php5/20090626+lfs/mysqli.so' - /usr/lib/php5/20090626+lfs/mysqli.so: cannot open shared object file: No such file or directory in Unknown on line 0
PHP Warning: PHP Startup: Unable to load dynamic library '/usr/lib/php5/20090626+lfs/pdo.so' - /usr/lib/php5/20090626+lfs/pdo.so: cannot open shared object file: No such file or directory in Unknown on line 0
PHP Warning: PHP Startup: Unable to load dynamic library '/usr/lib/php5/20090626+lfs/pdo_mysql.so' - /usr/lib/php5/20090626+lfs/pdo_mysql.so: cannot open shared object file: No such file or directory in Unknown on line 0
Interactive shell
Ошибка в PHP5..Unable для загрузки динамической библиотеки
Ответ 1
Несмотря на то, что некоторые другие варианты подсказывают это, установка более ненужного программного обеспечения обычно не - лучшее решение. Вместо этого вы должны исправить основную проблему. Причина появления этих сообщений заключается в том, что вы пытаетесь загрузить эти расширения, но они не установлены. Поэтому простое решение - просто сказать PHP прекратить попытки загрузить их:
Сначала выясните, какие файлы пытаются загрузить указанные выше расширения:
$ grep -Hrv ";" /etc/php5 | grep -E "extension(\s+)?="
Пример вывода для Ubuntu:
/etc/php5/mods-available/gd.ini:extension=gd.so
/etc/php5/mods-available/pdo_sqlite.ini:extension=pdo_sqlite.so
/etc/php5/mods-available/pdo.ini:extension=pdo.so
/etc/php5/mods-available/pdo_mysql.ini:extension=pdo_mysql.so
/etc/php5/mods-available/mysqli.ini:extension=mysqli.so
/etc/php5/mods-available/mysql.ini:extension=mysql.so
/etc/php5/mods-available/curl.ini:extension=curl.so
/etc/php5/mods-available/sqlite3.ini:extension=sqlite3.so
/etc/php5/conf.d/mcrypt.ini:extension=mcrypt.so
/etc/php5/conf.d/imagick.ini:extension=imagick.so
/etc/php5/apache2/php.ini:extension=http.so
Теперь просто найдите файлы, которые загружают расширения, которые вызывают ошибки, и комментируют эти строки с помощью ;
. По какой-то причине это случилось со мной с установкой Ubuntu по умолчанию, поэтому, надеюсь, это поможет кому-то еще.
Ответ 2
sudo apt-get install php5-mcrypt
sudo apt-get install php5-mysql
... и т.д. разрешил это для меня:)
надеюсь, что это поможет
Ответ 3
Посмотрите/etc/php5/cli/conf.d/и удалите соответствующие *.ini файлы. Эта ошибка возникает, когда вы удаляете некоторые пакеты php не так чисто.
Ответ 4
Похоже, вы обновили PHP до более новой версии, а старые .ini файлы все еще указывают на старое местоположение.
Решение: узнайте, где находятся модули, расположенные сейчас
ls -l /usr/lib/php5
Должен быть каталог, похожий на старый 20090626
. В моем случае теперь 20131226
Файлы .ini, выдающие вам ошибку, расположены в /etc/php5/cli/conf.d/
Просто отредактируйте эти .ini файлы, которые вызывают ошибку. Например, если ошибка для модуля mcrypt:
sudo vi /etc/php5/cli/conf.d/20-mcrypt.ini
Измените строку:
extension=/usr/lib/php5/20090626/mcrypt.so
чтобы отразить новый путь для .so файла. В моем случае правильный путь должен быть:
extension=/usr/lib/php5/20131226/mcrypt.so
Что это! Ошибка исчезла. Ofc вам придется делать это с каждым модулем, давая вам ошибку.
Ответ 5
Если вы положили; символ, это действие неактивно расширяет.
У меня была такая же проблема, и я сделал следующее:
-
Удалите php с параметром очистки:
sudo apt-get --purge remove php5-common
-
И установите снова:
sudo apt-get install php5 php5-mysql
Ответ 6
Моя проблема была решена с помощью следующей команды
sudo apt-get install php5-mcrypt
У меня
- PHP 5.3.10-1ubuntu3.4 с Suhosin-Patch (cli)
- Ubuntu Desktop 12.04
- Mysql 5.5
Ответ 7
Я нашел это решение blog.tordeu.com, и это
sudo aptitude purge php5-suhosin
Я не уверен, но кажется, что suhosin
больше не нужен, он работал для моей, моей версии PHP:
PHP 5.4.34-1+deb.sury.org~lucid+1 (cli) (built: Oct 17 2014 15:26:51)
Copyright (c) 1997-2014 The PHP Group
Zend Engine v2.4.0, Copyright (c) 1998-2014 Zend Technologies
Ответ 8
Если вы используете 5.6 php,
sudo apt-get install php5.6-curl
Ответ 9
Как-то файл gmp.so
, кажется, был удален из моей системы. Это то, что исправило это для меня:
sudo apt-get install --reinstall php5-gmp
Ответ 10
Хорошо для Ubuntu 14.04 Я получал эту ошибку только для mcrypt:
PHP Warning: PHP Startup: Unable to load dynamic library '/usr/lib/php5/20121212/mcrypt.ini' - /usr/lib/php5/20121212/mcrypt.ini: cannot open shared object file: No such file or directory in Unknown on line 0
Если вы поближе посмотрите на ошибку, php ищет mcrypt.ini, а не mcrypt.so в этом месте. Я просто копирую файл mcrypt.so в файл mcrypt.ini, и это предупреждение исчезло, и расширение теперь правильно установлено. Это может выглядеть немного грязно, но это сработало!
Ответ 11
Я включил extension_dir в php.ini с помощью uncommenting,
extension_dir = "ext"
extension=phpchartdir550.dll
и копирование phpchartdir550 dll в extension_dir (/usr/lib/php5/20121212) привели к той же ошибке.
PHP Warning: PHP Startup: Unable to load dynamic library 'ext/phpchartdir550.dll' - ext/phpchartdir550.dll: cannot open shared object file: No such file or directory in Unknown on line 0
PHP Warning: PHP Startup: Unable to load dynamic library 'ext/pdo.so' - ext/pdo.so: cannot open shared object file: No such file or directory in Unknown on line 0
PHP Warning: PHP Startup: Unable to load dynamic library 'ext/gd.so' - ext/gd.so: cannot open shared object file: No such file or directory in Unknown on line 0
Как отметил @Mike, нет необходимости устанавливать все, когда они действительно не требуются в приложении.
Более простой способ - предоставить полный путь к расширениям, которые будут загружены после копирования библиотек в нужное место.
Скопировать phpchartdir550.dll в /usr/lib/php 5/20121212, который является расширением_dir в моем Ubuntu 14.04 (это можно увидеть с помощью phpinfo()) а затем предоставить полный путь к библиотеке в php.ini,
; extension=/path/to/extension/msql.so
extension=/usr/lib/php5/20121212/phpchartdir550.dll
перезапустить apache: sudo service apache2 restart
хотя другие .so присутствуют в одном каталоге, могут быть выборочно загружены только требуемые.
Ответ 12
У меня была аналогичная проблема, которая привела меня сюда:
$ phpunit --version
PHP Warning: PHP Startup: Unable to load dynamic library '/usr/lib/php5/20131226/profiler.so' - /usr/lib/php5/20131226/profiler.so: cannot open shared object file: No such file or directory in Unknown on line 0
PHPUnit 5.7.17 by Sebastian Bergmann and contributors.
В отличие от вышеизложенного, установка программного обеспечения не решила мою проблему, потому что у меня уже было это.
$ sudo apt-get install php5-uprofiler
Reading package lists... Done
Building dependency tree
Reading state information... Done
php5-uprofiler is already the newest version.
0 upgraded, 0 newly installed, 0 to remove and 52 not upgraded.
Я нашел свое решение через: Журналы отчетов об ошибках Debian
$ sudo vim /etc/php5/mods-available/uprofiler.ini
Я отредактировал файл ini, изменив расширение = profiler.so на extension = uprofiler.so.... результат, счастливо:
$ phpunit --version
PHPUnit 5.7.17 by Sebastian Bergmann and contributors.
то есть. больше никаких предупреждений.
Ответ 13
(Для пользователей Ubuntu)
У меня была та же самая проблема, но ни один из ответов выше не решил это. Вот как я решил проблему.
Откройте файл php.ini
(мой был в /etc/php/7.3/cli/php.ini
).
У вас может быть что-то вроде этого:
extension=pdo_mysql
Или, может быть,
extension=/here/is/the/path/to/your/file/pdo_mysql.so
Добавьте следующую строку перед extension=pdo_mysql
extension=pdo
Итак, у вас будет:
extension=pdo
extension=pdo_mysql
Кажется, проблема в том (по крайней мере, в моем случае), что нам нужно сначала загрузить расширение pdo
, чтобы загрузить расширение pdo_mysql
.
Надеюсь, это поможет!
Ответ 14
Попробуйте следующее:
- Откройте php.ini
- Путь: etc/php5/cli/php.ini
- Удалить или прокомментировать: extension = ssh2.so и затем сохранить его.