¿Cómo puedo instalar PHP 5.6.14 en Mac OS X 10.11 (El Capitan)?

¿Cómo puedo instalar PHP 5.6.14 en Mac OS X 10.11 (El Capitan)?

Recientemente actualicé de OS X Yosemite a El Capitan y necesitaba reinstalar PHP. Entonces, descargué php (versión 5.6.14), ejecuté el ./configurearchivo y luego ejecuté sudo make. Sin embargo, al hacerlo, la compilación falla con los siguientes mensajes finales:

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 encontré este mensaje mientras estaba en Mac OS X 10.9.5 (Yosemite).

¿Cómo resolvería este mensaje? Intenté desactivar la Protección de integridad del sistema (SIP) sin éxito.

Respuesta1

Según este informe de problema de GitHub relacionado con la creación de PHP 5.6.11 beta en Mac OS X 10.11 (El Capitan), el problema clave relacionado con libxml2. Su recomendación en el caso de Homebrew es ejecutar este brew linkcomando:

brew link libxml2 --force

Pero si está compilando a partir de código fuente puro, no está 100% seguro de cómo se manejaría.

Dicho esto, encontré un tema similar discutido en esteEsencia de Nokogiri—titulado hilarantemente “Qué hacer si libxml2 está siendo un idiota”—y las pistas apuntan a señalar explícitamente cosas de LibXML2 como esta:

--with-xml2-include=/usr/local/include/libxml2

Pero, por supuesto, eso sería para las opciones de configuración de Nokogiri. Pero mirandola documentación oficial de PHPexplica lo siguiente:

el opcional--con-libxml-dirLa directiva se utiliza para especificar la ubicación delibxmlen el sistema en el que se está compilando PHP; de lo contrario, solo se escanean las ubicaciones predeterminadas.

Entonces, saber que parece agregar --with-libxml-dira su ./configurecomando algo con una ruta establecida como se muestra a continuación debería funcionar:

--with-libxml-dir=/usr/local/include/libxml2

Dicho eso,El sitio web de esta persona tiene un buen tutorial.sobre cómo compilar PHP 5.5.24 en Mac OS X que se ha actualizado para hacer frente a Mac OS X 10.10.5 y también a Mac OS X 10.11. Y si revisa el ./configurecomando, podrá ver que esa persona está usando --with-libxml-dir=/usr. Si bien la información se presenta para PHP 5.5.24, imagino que el proceso para PHP 5.6.14 debería ser similar, si no el mismo. Aquí está su ./configurecomando completo como referencia:

./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'

Respuesta2

A menos que necesite específicamente una versión más nueva, PHP 5.5.27 viene con OS X El Capitan.

Puede descomentar (eliminar #) antes de la línea LoadModule php5_module libexec/apache2/libphp5.sodentro de httpd.conf (usar sudo nano /etc/apache2/httpd.confpara acceder).

información relacionada