Ошибка в PHP5..Unable для загрузки динамической библиотеки

[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

Ответ 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 и затем сохранить его.