%3F.png)
Recentemente atualizei do OS X Yosemite para o El Capitan e precisei reinstalar o PHP. Então, baixei o php (versão 5.6.14), executei o ./configure
arquivo e depois executei o sudo make
. No entanto, ao fazer isso, a compilação falha com as seguintes mensagens finais:
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
make: *** [sapi/cli/php] Error 1
Nunca encontrei esta mensagem no Mac OS X 10.9.5 (Yosemite).
Como eu resolveria essa mensagem? Tentei desativar o System Integrity Protection (SIP) sem sucesso.
Responder1
De acordo com este relatório de problema do GitHub relacionado à construção do PHP 5.6.11 beta no Mac OS X 10.11 (El Capitan), o principal problema conectado ao libxml2
. A recomendação deles no caso do Homebrew é executar este brew link
comando:
brew link libxml2 --force
Mas se você estiver compilando a partir de código-fonte puro, não tenho 100% de certeza de como isso seria tratado.
Dito isto, encontrei um problema semelhante discutido nesteEssência de Nokogiri— hilariantemente intitulado “O que fazer se a libxml2 estiver sendo um idiota” — e as pistas apontam para apontar explicitamente para o material da LibXML2 como este:
--with-xml2-include=/usr/local/include/libxml2
Mas – é claro – isso seria para as opções de configuração do Nokogiri. Mas olhando paraa documentação oficial do PHPexplica o seguinte:
O opcional--with-libxml-dirdiretiva é usada para especificar a localização delibxmlno sistema em que o PHP está sendo compilado, caso contrário, apenas os locais padrão serão verificados.
Portanto, saber que parece adicionar algo --with-libxml-dir
ao seu ./configure
comando - algo com um caminho definido como abaixo - deve funcionar:
--with-libxml-dir=/usr/local/include/libxml2
Dito isto,o site dessa pessoa tem um tutorial legalsobre como compilar o PHP 5.5.24 no Mac OS X que foi atualizado para lidar com o Mac OS X 10.10.5 e também com o Mac OS X 10.11. E se você olhar o ./configure
comando, verá que essa pessoa está usando o --with-libxml-dir=/usr
. Embora as informações sejam apresentadas como sendo do PHP 5.5.24, imagino que o processo para o PHP 5.6.14 deva ser semelhante, senão igual. Aqui está o ./configure
comando completo para referência:
./configure '--prefix=/usr' \
'--mandir=/usr/share/man' \
'--infodir=/usr/share/info' \
'--sysconfdir=/private/etc' \
'--with-apxs2=/usr/sbin/apxs' \
'--enable-cli' \
'--with-config-file-path=/etc' \
'--with-config-file-scan-dir=/Library/Server/Web/Config/php' \
'--with-libxml-dir=/usr' \
'--with-openssl=/usr' \
'--with-kerberos=/usr' \
'--with-zlib=/usr' \
'--enable-bcmath' \
'--with-bz2=/usr' \
'--enable-calendar' \
'--disable-cgi' \
'--with-curl=/usr' \
'--enable-dba' \
'--with-ndbm=/usr' \
'--enable-exif' \
'--enable-fpm' \
'--enable-ftp' \
'--with-icu-dir=/usr' \
'--with-ldap=/usr' \
'--with-ldap-sasl=/usr' \
'--with-libedit=/usr' \
'--enable-mbstring' \
'--enable-mbregex' \
'--with-mysql=mysqlnd' \
'--with-mysqli=mysqlnd' \
'--without-pear' \
'--with-pear=no' \
'--with-pdo-mysql=mysqlnd' \
'--with-mysql-sock=/var/mysql/mysql.sock' \
'--with-readline=/usr' \
'--enable-shmop' \
'--with-snmp=/usr' \
'--enable-soap' \
'--enable-sockets' \
'--enable-sysvmsg' \
'--enable-sysvsem' \
'--enable-sysvshm' \
'--with-tidy' \
'--enable-wddx' \
'--with-xmlrpc' \
'--with-iconv-dir=/usr' \
'--with-xsl=/usr' \
'--enable-zip'
Responder2
A menos que você precise especificamente de uma versão mais recente, o PHP 5.5.27 vem com o OS X El Capitan.
Você pode descomentar (remover #) antes da linha LoadModule php5_module libexec/apache2/libphp5.so
dentro do httpd.conf (use sudo nano /etc/apache2/httpd.conf
para acessar).