2009-02-17 12 views
2

J'ai écrit une extension PHP, et j'essaie de la faire fonctionner sur le serveur Apache de Mac.Extension PHP sur un Mac

Il fonctionne très bien via la ligne de commande, par exemple:

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

J'ai essayé aussi la construction d'Apache de la source, et il fonctionne parfaitement quand je lance que (je l'ai mis à utiliser le même PHP que Mac intégré Apache, aussi, donc pas de différence là-bas).

Cependant, quand je charge mon extension avec le défaut Apache vous using System Préférences-> Partage Web ou, ce qui revient, apachectl dans sbin, il est dit:

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 

Y at-il quelque chose de bizarre sur Apache Mac ou une permission pour cela que je dois définir?

Répondre

2

Cela ressemble au type d'erreur qui serait causé par les différences d'architecture. Essayez de faire un file /usr/lib/php/extensions/mylib.dylib et voir quelles architectures sont incluses dans le binaire. IIRC, Apache s'exécute en 64 bits sur Leopard, vous devez donc vous assurer que votre bibliothèque inclut du code pour la version 64 bits du processeur que vous utilisez (ppc64 ou x86-64).

+0

Merci, compilant pour 64-bit fait fonctionner parfaitement! Il y avait un tas de bibliothèques 32 bits dont je n'avais pas réalisé que ça dépendait, donc j'ai dû les recompiler aussi, et ça a marché. – kristina

0

En effet, c'est probablement la chose 64 bits qui vous mordre le cul. Essayez de passer '-arch x86_64' à gcc lorsque vous compilez votre extension.