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

Ok у меня есть PHP, работающий на моем сервере mac os x Apache 2. Проблема в том, что он не может найти расширения, которые позволяют мне подключиться к базе данных sqlite.

extension = php_sqlite.dll
extension = php_pdo_sqlite.dll
extension = php_sqlite3.dll

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

PHP Warning:  PHP Startup: Unable to load dynamic library '/usr/lib/php/extensions/no-debug-non-zts-20090626/php_sqlite3.dll' - dlopen(/usr/lib/php/extensions/no-debug-non-zts-20090626/php_sqlite3.dll, 9): image not found in Unknown on line 0

это одна и та же ошибка для всех 3.
Теперь я читал в разных местах в интернете, возможно, они не установлены на моем mac, но я не могу найти каталог PHP или где-нибудь, где они будет!
Я очень новичок в этом, поэтому любая помощь будет грандиозной Диско

3 ответов


расширение DLL вы включили на самом деле для Windows. На Mac и других платформах *nix они на самом деле являются файлами SO.

я на Mac, а также кажется, что модули SQLite уже загружены. Вы должны иметь возможность комментировать эти строки в своем php.ini file, перезапустите Apache и используйте SQLite без необходимости что-либо делать. Модули SQLite были включены столько, сколько я помню.

если он действительно не включен, вам придется скомпилировать модули от источника. Для этого необходимо установить Инструменты Разработчика Apple.

для компиляции с нуля (из командной строки):

  1. скачать исходный код PHP. Вам нужно будет загрузить тот, который соответствует версии, уже установленной в вашей системе. Чтобы узнать, какой из них вы используете, введите php -v из командной строки.
  2. извлеките архив, который вы загрузили с помощью tar -zxvf далее следует имя файла.
  3. тип cd php-5.3.x/ext/sqlite3/ (где "5.3.x "должен быть заменен номером вашей версии, а" sqlite3 "может быть любым из модулей, которые вы хотите установить из своего списка выше минус префикс" php_").
  4. тип phpize.
  5. тип ./configure.
  6. тип make.
  7. тип sudo make install.
  8. добавить extension=sqlite3.so на php.ini (снова убедитесь, что вы заменили sqlite3.таким образом, с именем других расширений, если вы компилируете другие.)

наконец, перезапустите Apache, и вы должны быть сделаны.


открыть php.ini. Найдите строку, которая определяет местоположение ваших расширений. В моем случае (Windows machine) он выглядит так:

extension_dir = "C:\xampp\php\ext"

Это дает вам место, где находятся все ваши расширения. Откройте его и проверьте, действительно ли существуют расширения SQLite.

кроме того, убедитесь, что ваши расширения предназначены для компьютера Mac. Их расширение имени файла должно быть "dylib" или, возможно," so " (не уверен - у меня нет Mac), в то время как "dll" -это динамическое расширение файла библиотеки для Windows (AFAIK).


Попробуйте удалить, а затем переустановить пакеты:

brew rm mcrypt
brew install mcrypt