2010-10-14 2 views
1

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

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/Приложения/XAMPP/xamppfiles/lib/php/php-5.3.1/extensions/no-debug-non-zts-20090626/mongo.so: неизвестная команда загрузки 0x80000022 в Unknown on line 0

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

Я бегу OS 10.5.8. Есть идеи?

ответ

0

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

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

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

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

CFLAGS="-arch i386" ./pecl install 

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

Это должно работать (на основе выше и manual installation instructions for the Mongo driver on 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 выше для остальных шагов в руководстве по установке (т.е. добавление расширения в РНР .ini).

+0

Битность ядра не затрагивает пользователя в Mac OS X вообще. Вы можете запускать 64-разрядные приложения на 32-битном ядре и наоборот. – duskwuff

+0

@duskwuff Что вы сказали правильно. Однако, что вы не можете сделать, используется 32-разрядный MAMP с 64-разрядным расширением. Вы можете запустить 32-разрядный MAMP с 32-битным 'mongo.so', но использование 64-битного' mongo.so' не будет работать. – natchiketa

Смежные вопросы