2009-02-17 3 views
2

Я написал расширение PHP, и я пытаюсь запустить его на сервере Apache Mac.Расширение PHP на Mac

Он прекрасно работает из командной строки, например:

$ php -r 'dl("mylib.dylib"); 

Я также пытался строить Apache из источника, и он прекрасно работает, когда я бегу, что (я поставил его использовать тот же PHP, как Мака встроенный Apache тоже, поэтому никакой разницы нет).

Однако, когда я загружаю мое расширение с по умолчанию Apache вы получите с помощью системы Настройки-> Web Sharing, или, что то же самое, apachectl в SBIN, он говорит:

Warning: dl() [function.dl]: Unable to load dynamic library '/usr/lib/php/extensions/mylib.dylib' - (null) in /Users/myuname/Sites/test.php on line 6 

Есть ли что-то странное о Apache Mac или какое-то разрешение на это, которое я должен установить?

ответ

2

Это звучит как ошибка, которая может быть вызвана различиями в архитектуре. Попробуйте сделать file /usr/lib/php/extensions/mylib.dylib и посмотреть, какие архитектуры включены в двоичный файл. IIRC, Apache работает как 64-бит на Leopard, поэтому вам нужно убедиться, что ваша библиотека содержит код для 64-битной версии того процессора, на котором вы работаете (ppc64 или x86-64).

+0

Спасибо, скомпилировав его для 64-бит, он отлично работает! Было множество 32-битных библиотек, которые я не осознавал, что это зависит от меня, поэтому мне пришлось перекомпилировать их тоже, и тогда это сработало. – kristina

0

Действительно, это, вероятно, 64-битная вещь, которая кусает вас в заднице. Попробуйте передать '-arch x86_64' в gcc при компиляции своего расширения.

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