Не удается получить PHP для загрузки расширения mongo.so - PullRequest
1 голос
/ 14 октября 2010

Я пытался собрать библиотеку с помощью PECL, я пытался загрузить ее с github.Я пробовал MAMP, я пробовал XAMPP.Я всегда получаю одну и ту же ошибку:

Предупреждение PHP: Запуск PHP: невозможно загрузить динамическую библиотеку '/Applications/XAMPP/xamppfiles/lib/php/php-5.3.1/extensions/no-debug-non-zts-20090626 / mongo.so '- dlopen (/Applications/XAMPP/xamppfiles/lib/php/php-5.3.1/extensions/no-debug-non-zts-20090626/mongo.so, 9): нет подходящего изображениянайденный.Обнаружил: \ n \ t / Applications / XAMPP / xamppfiles / lib / php / php-5.3.1 / extensions / no-debug-non-zts-20090626 / mongo.so: неизвестно требуется команда загрузки 0x80000022 в поле Неизвестно в строке 0

(пути различаются в зависимости от XAMPP или MAMP)

Я использую ОС 10.5.8.Есть идеи?

1 Ответ

0 голосов
/ 20 января 2012

Сразу после сообщения об ошибке я могу сказать, что это проблема, связанная с архитектурой (например, см. this ).XAMPP по-прежнему 32-битный только в соответствии с этим вопросом в их FAQ , и PECL попытается построить расширения как 64-битные по умолчанию.

Однако и MAMP, и MAMP Pro входят в оба32- и 64-разрядные двоичные файлы по состоянию на 2.0 1 .

Однако вопрос заключается в том, имеет ли ваш Mac 64-разрядный процессор и работает ли он по умолчанию с 64-разрядной OS X, Эта статья о поддержке Apple предлагает руководство по определению, какой у вас Mac.Например, если у вас есть Macbook Pro 2008-2010 годов, он может по умолчанию запускать 32-разрядное ядро, но (см. Статью) вы можете настроить его для запуска 64-разрядного ядра.

Ваш самый быстрый путь к вашей цели, вероятно, состоит в том, чтобы собрать mongo.so для 32-битной системы.В этой статье о использовании MAMP / PECL для установки расширений PHP говорится, что с PECL это должно быть так просто:

CFLAGS="-arch i386" ./pecl install

Если это не сработает, вы можете попробовать руководствоустановка, передав 32-битные флаги для настройки.См. этот вопрос для установки memcached.so для методов, которые, вероятно, будут работать для вас.

Это должно работать (на основе выше и инструкции по ручной установке драйвера Mongo для php.net ):

tar zxvf mongodb-mongodb-php-driver-<commit_id>.tar.gz
cd mongodb-mongodb-php-driver-<commit_id>
phpize
MACOSX_DEPLOYMENT_TARGET=10.5 CFLAGS="-arch i386 -arch x86_64 -g -Os -pipe -no-cpp-precomp" CCFLAGS="-arch i386 -arch x86_64 -g -Os -pipe" CXXFLAGS="-arch i386 -arch x86_64 -g -Os -pipe" LDFLAGS="-arch i386 -arch x86_64 -bind_at_load" ./configure
sudo make install

... затем обратитесь к приведенной выше ссылке на php.net для остальных этапов установки вручную (т. е. добавьте расширение в ваш php.ini).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...