2010-04-03 6 views
1

PHP 5.2.12
OS X 10.5.8OpenSSL ne figure pas dans les modules PHP, mais apparaît dans la commande configure

Si je compile PHP de la source avec la commande suivante configure

./configure --disable-all --with-openssl=shared,/opt/local 

il réussit. Cependant, après une make et make install,

php -m 

ne pas liste le module OpenSSL. D'après ce que j'ai lu, j'ai pense il peut être dû à plusieurs installations de la bibliothèque openssl. Installation de la dernière version de OpenSSL de source et essayer de spécifier le chemin dans la commande configure, --with-openssl=/usr/local, toujours traduit par l'erreur suivante:

Undefined symbols: 
    "_EVP_CIPHER_CTX_block_size", referenced from: 
     _zif_openssl_seal in openssl.o 
ld: symbol(s) not found 
collect2: ld returned 1 exit status 
make: *** [sapi/cgi/php-cgi] Error 1 

J'ai essayé quelques variations différentes sur le chemin sans chance.

Basé sur http://blog.yimingliu.com/2009/02/24/missing-library-symbols-while-compiling-php-528/, j'ai également essayé d'éditer le Makefile de sorte que MH_BUNDLE_FLAGS apparaisse plus tard dans la ligne de compilation. Après avoir passé une bonne partie de la journée sur ce problème, je suis à court de ressources.

Des suggestions?

Idéalement, j'aimerais utiliser la version compilée et la plus récente d'OpenSSL. Mais à ce stade, je suis prêt à accepter tout ce qui fonctionne.

Répondre

1

Duh. Bien sûr php -m ne listerait pas le module. C'est spécifié comme "partagé". Oui, je ne suis pas très familier avec la compilation de la source.

Ma solution consistait

./configure 
--disable-all \ 
--prefix=/usr/local \ 
--with-openssl=shared,/usr \ 
--with-config-file-scan-dir=/etc 
...<snip> 

puis en ajoutant

extension=openssl.so 

à /etc/php.ini

Redémarré apache et tout fonctionne maintenant comme il se doit.

Questions connexes