2010-09-10 14 views
2

Je suis en train de recompiler PHP 5.3.3 sur le léopard des neiges mac os avec iconv et obtenir l'erreur suivante:Compiler PHP 5.3.3 sur Mac OS Snow Leopard. Problème avec iconv reliant

Undefined symbols: 
    "_libiconv_open", referenced from: 
     _php_iconv_string in iconv.o 
     __php_iconv_strlen in iconv.o 
     __php_iconv_substr in iconv.o 
     __php_iconv_substr in iconv.o 
     __php_iconv_strpos in iconv.o 
     __php_iconv_mime_encode in iconv.o 
     __php_iconv_mime_encode in iconv.o 
     __php_iconv_mime_decode in iconv.o 
     __php_iconv_mime_decode in iconv.o 
     _php_iconv_stream_filter_ctor in iconv.o 
    "_libiconv", referenced from: 
     __php_iconv_appendl in iconv.o 
     __php_iconv_appendl in iconv.o 
     _php_iconv_string in iconv.o 
     _php_iconv_string in iconv.o 
     __php_iconv_strlen in iconv.o 
     __php_iconv_substr in iconv.o 
     __php_iconv_strpos in iconv.o 
     __php_iconv_mime_encode in iconv.o 
     __php_iconv_mime_encode in iconv.o 
     __php_iconv_mime_encode in iconv.o 
     __php_iconv_mime_encode in iconv.o 
     __php_iconv_mime_encode in iconv.o 
     __php_iconv_mime_encode in iconv.o 
     _php_iconv_stream_filter_append_bucket in iconv.o 
     _php_iconv_stream_filter_append_bucket in iconv.o 
     _php_iconv_stream_filter_append_bucket in iconv.o 
    (maybe you meant: __libiconv_version) 
    "_libiconv_close", referenced from: 
     _php_iconv_string in iconv.o 
     __php_iconv_strlen in iconv.o 
     __php_iconv_substr in iconv.o 
     __php_iconv_substr in iconv.o 
     __php_iconv_strpos in iconv.o 
     __php_iconv_mime_encode in iconv.o 
     __php_iconv_mime_encode in iconv.o 
     __php_iconv_mime_decode in iconv.o 
     __php_iconv_mime_decode in iconv.o 
     __php_iconv_mime_decode in iconv.o 
     _php_iconv_stream_filter_dtor in iconv.o 

Je sais qu'il est vieux problème et je ne pouvais pas trouver la bonne solution dans Google.

Toutes les idées pour y remédier seront appréciées.

J'utilise:

./configure --prefix=/usr/local/php5 --with-iconv=/usr/local --with-apxs2=/usr/sbin/apxs --enable-pdo --with-gd=/usr/local --with-zlib --with-jpeg-dir=/usr/local/lib --with-png-dir=/usr/local/lib --with-libxml-dir=/usr/local --with-curl --with-mcrypt --with-pdo-mysql=/usr/local/mysql --with-mysqli=/usr/local/mysql/bin/mysql_config --with-mysql=/usr/local/mysql --with-mhash --with-libxml-dir=/usr/local --with-t1lib=/usr/local --with-xsl --with-freetype-dir=/usr/local --with-gettext --with-bz2=/usr --with-openssl=/usr/local/ssl --enable-bcmath --enable-calendar --enable-cgi --enable-exif --enable-ftp --enable-gd-native-ttf --enable-mbstring --enable-soap --enable-sqlite-utf8 --enable-cli --enable-wddx --enable-zip 

Et je recompilé libiconv 1.13.1 aussi bien.

+0

Je n'ai pas de réponse pour vous, mais je travaille sur le même problème. Jusqu'à présent, j'ai essayé de patcher iconv (instructions à fabien.potencier.org/article/37/php-5-3-0-on-mac-os-10-6-snow-leopard) et éditer le fichier iconv.c (instructions à bill.eccles.net/bills_words/2010/01/building-a-mac-os-x-server-106.html) Je vois toujours les mêmes erreurs. Faites-moi savoir si vous trouvez des réponses supplémentaires. Je posterai avec le même. Merci. –

+0

Je ne suis pas sûr, mais j'ai déposé un rapport de bug qui pourrait aider car je pense que si vous supprimez le support d'openssl, cela fonctionnera. Peut être. Nous verrons ce qui se passe, et nous espérons que 5.3.4 trouvera une solution. –

+0

try php 5.3.5 peut-être un bogue 5.3.3 –

Répondre

0

Cela fait partie d'une série de problèmes de compilation de PHP sur Mac OS X qui se rapportent à plusieurs versions de bibliothèques - la réponse des développeurs PHP est presque invariablement "Just delete the extra libraries. fait qu'il y a souvent raisons tout à fait légitimes pour avoir plusieurs bibliothèques installées. Ils refusent d'aborder le problème.

Ce poste: http://blog.yimingliu.com/2009/02/24/missing-library-symbols-while-compiling-php-528/

couvre le cas de libxml, mais il y a un problème similaire.

+0

1. PHP ne compile pas il est interprété. 2. Il est possible d'avoir plusieurs versions de PHP côte à côte. Assurez-vous simplement que le serveur Web utilise celui que vous pensez qu'il devrait utiliser. c'est-à-dire les chemins corrects/fichiers 'php.ini' –

2

Hola! J'ai eu ce même problème à la fois sur PHP 5.3.3 et PHP 5.3.5. Mes erreurs se lisent comme ceci sur 5.3.5

Undefined symbols: 
    "_libiconv", referenced from: 
     __php_iconv_strlen in iconv.o 
     _php_iconv_string in iconv.o 
     _php_iconv_string in iconv.o 
     __php_iconv_strpos in iconv.o 
     __php_iconv_appendl in iconv.o 
     __php_iconv_appendl in iconv.o 
     _zif_iconv_substr in iconv.o 
     _zif_iconv_mime_encode in iconv.o 
     _zif_iconv_mime_encode in iconv.o 
     _zif_iconv_mime_encode in iconv.o 
     _zif_iconv_mime_encode in iconv.o 
     _zif_iconv_mime_encode in iconv.o 
     _zif_iconv_mime_encode in iconv.o 
     _php_iconv_stream_filter_append_bucket in iconv.o 
     _php_iconv_stream_filter_append_bucket in iconv.o 
    (maybe you meant: __libiconv_version) 
ld: symbol(s) not found 
collect2: ld returned 1 exit status 
make: *** [libs/libphp5.bundle] Error 1 

la solution est des modifications apportées au fichier ext/iconv/iconv.c

ouvrir et changer autour de la ligne 185 pour ressembler à ce

  • #if defined (HAVE_LIBICONV) & & définie (ICONV_ALIASED_LIBICONV)
  • #define iconv iconv
  • #endif

changer fondamentalement "libiconv" juste "iconv"

cette solution a fonctionné pour moi à la fois php 5.3.3 et 5.3.5 sur snowleopard 10.6.4

paix

+0

Cela a fonctionné pour moi. Merci! – MZAweb