compile php 5.3.3 com extensão intl no Snow Leopard 10.6

1

Estou tentando compilar o php no meu mac.

Eu segui este tutorial: link
Eu também verifiquei este post: Compile o PHP 5.3.2 com extensão intl no Snow Leopard 10.6.3

aqui estão minhas opções de configuração:

./configure \
--prefix=/usr \
--with-apxs2=/usr/sbin/apxs \
--with-ldap=/usr \
--with-kerberos=/usr \
--enable-cli \
--with-zlib-dir=/usr \
--enable-exif \
--enable-ftp \
--enable-mbstring \
--enable-mbregex \
--enable-sockets \
--with-iodbc=/usr \
--with-curl=/usr \
--with-config-file-path=/etc \
--sysconfdir=/private/etc \
--with-mysql-sock=/tmp \
--with-mysql=/usr/local/mysql \
--with-openssl=/usr \
--with-xmlrpc \
--with-xsl=/usr \
--without-pear \
--with-libxml-dir=/usr \
--with-iconv=/usr/local \
--with-pdo-mysql=/usr/local/mysql/bin/mysql_config \
--with-gd \
--with-jpeg-dir=/opt/local \
--with-png-dir=/opt/local \
--with-freetype-dir=/opt/local \
--with-mcrypt=/opt/local \
--enable-intl \
--with-icu-dir=/opt/local


Eu mudo o Makefile, substitua isto:

$(CC) $(MH_BUNDLE_FLAGS) $(CFLAGS_CLEAN) $(EXTRA_CFLAGS) $(LDFLAGS) $(EXTRA_LDFLAGS) $(PHP_GLOBAL_OBJS:.lo=.o) $(PHP_SAPI_OBJS:.lo=.o) $(PHP_FRAMEWORKS) $(EXTRA_LIBS) $(ZEND_EXTRA_LIBS) -o $@ && cp $@ libs/libphp$(PHP_MAJOR_VERSION).so

para isso:

$(CC) $(CFLAGS_CLEAN) $(EXTRA_CFLAGS) $(LDFLAGS) $(EXTRA_LDFLAGS) $(PHP_GLOBAL_OBJS:.lo=.o) $(PHP_SAPI_OBJS:.lo=.o) $(PHP_FRAMEWORKS) $(EXTRA_LIBS) $(ZEND_EXTRA_LIBS) $(MH_BUNDLE_FLAGS) -o $@ && cp $@ libs/libphp$(PHP_MAJOR_VERSION).so

Eu também tive este -lstdc ++ em EXTRA_LIBS no Makefile.


aqui está a mensagem de erro:

In file included from /opt/local/include/unicode/utypes.h:36,
                 from /usr/local/src/php-5.3.3/ext/intl/grapheme/grapheme.h:21,
                 from /usr/local/src/php-5.3.3/ext/intl/php_intl.h:26,
                 from main/internal_functions.c:47:
/opt/local/include/unicode/umachine.h:308: error: redefinition of typedef ‘UChar’
/usr/include/libxml2/libxml/encoding.h:41: error: previous declaration of ‘UChar’ was here
make: *** [main/internal_functions.lo] Error 1


eu tentei outra compilação sem intl (delete 2 últimas linhas em ./configure) e funciona.

Alguém pode me explicar a mensagem de erro ou indicar o que pode estar errado nas opções ./configure? muito obrigado antecipadamente

    
por jules 18.08.2010 / 16:33

4 respostas

0

Eu tentei fazer a mesma coisa e falhei devido a muitos erros do mesmo tipo. Tentei corrigir um por um e consegui mais um! Eu "rebaixei" para o php 5.2.14 e não tive mais problemas.

    
por 24.08.2010 / 22:37
1

Ou então, novamente, você poderia construir libxml2 do mais novo pacote de fontes estáveis, que é o que eu fiz, já que voltar para o 5.2 não era uma opção e eu compila virtualmente todas as dependências do php (libicu, também) manualmente na minha caixa dev G4: 1) obtenha o pacote de código-fonte mais recente da libxml2 no link 2) compile libxml2: tar xf libxml2-sources-2.7.7.tar.gz cd libxml2-2.7.7 VER = 2,7,7 ./configure --enable-shared --enable-static --prefix = / opt / libxml2 - $ {VER} fazer & & faça instalar cd / opt; rm -rf libxml2; ln -s libxml2 - $ {VER} libxml2 3) compile o php com --with-libxml-dir = / opt / libxml2 (não se esqueça de rm config.cache apenas para o caso de você não limpar tudo entre suas tentativas de configurar / construir).

espero que ajude, chris

    
por 06.09.2010 / 17:27
0

Eu sei que isso é antigo, mas me deparei com o mesmo problema. Simplesmente comentando a linha

typedef uint16_t UChar;

em /opt/local/include/unicode/umachine.h resolveu o problema para mim.

    
por 29.11.2010 / 06:17
0

O problema é que tanto o ICU quanto o libxml2 definem o UChar. Este é o código problemático na libxml2, especificamente /usr/include/libxml2/libxml/encoding.h:

#ifdef LIBXML_ICU_ENABLED 
/* Forward-declare UConverter here rather than pulling in <unicode/ucnv.h>  
 * to prevent unwanted ICU symbols being exposed to users of libxml2.  
 * One particular case is Qt4 conflicting on UChar32: <rdar://problem/5100933>.  
 */
#include <stdint.h> struct UConverter; typedef struct UConverter UConverter;
#ifdef _MSC_VER typedef wchar_t UChar;
#else typedef uint16_t UChar;
#endif
#endif

Se você instalar o libxml2 a partir do código-fonte, este código parece não estar lá, então resolvi o problema usando o libxml2 instalado a partir do código-fonte.

    
por 08.06.2011 / 02:23

Tags