Wie kann ich PHP 5.6.14 auf Mac OS X 10.11 (El Capitan) installieren?

Wie kann ich PHP 5.6.14 auf Mac OS X 10.11 (El Capitan) installieren?

Ich habe vor Kurzem ein Upgrade von OS X Yosemite auf El Capitan durchgeführt und musste PHP neu installieren. Also habe ich PHP (Version 5.6.14) heruntergeladen, die ./configureDatei ausgeführt und dann ausgeführt sudo make. Dabei schlägt die Kompilierung jedoch mit den folgenden Meldungen fehl:

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

Unter Mac OS X 10.9.5 (Yosemite) ist mir diese Meldung nie begegnet.

Wie kann ich diese Meldung beheben? Ich habe erfolglos versucht, den Systemintegritätsschutz (SIP) zu deaktivieren.

Antwort1

Laut diesem GitHub-Problembericht im Zusammenhang mit dem Erstellen der PHP 5.6.11 Beta auf Mac OS X 10.11 (El Capitan) ist das Hauptproblem verbunden mit libxml2. Ihre Empfehlung im Fall von Homebrew ist, diesen brew linkBefehl auszuführen:

brew link libxml2 --force

Wenn Sie jedoch aus reinem Quellcode kompilieren, sind Sie sich nicht 100 % sicher, wie das gehandhabt wird.

Allerdings fand ich ein ähnliches Problem diskutiert in diesemNokogiri-Grundlagen– mit dem urkomischen Titel „Was tun, wenn libxml2 sich wie ein Idiot benimmt?“ – und die Hinweise deuten darauf hin, dass explizit auf die LibXML2-Sachen verwiesen werden muss, und zwar wie folgt:

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

Aber das wäre natürlich für Nokogiris Konfigurationsoptionen. Aber wenn man sichdie offizielle PHP-Dokumentationerklärt folgendes:

Die Wahl--with-libxml-dir-Direktive wird verwendet, um den Speicherort anzugebenlibxmlauf dem System, auf dem PHP kompiliert wird, andernfalls werden nur die Standardspeicherorte gescannt.

Wenn Sie das also wissen, scheint es zu funktionieren, wenn Sie --with-libxml-dirIhrem ./configureBefehl etwas mit dem unten festgelegten Pfad hinzufügen:

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

Das gesagt,Auf der Website dieser Person gibt es ein schönes Tutorialzum Kompilieren von PHP 5.5.24 in Mac OS X, das aktualisiert wurde, um mit Mac OS X 10.10.5 und Mac OS X 10.11 zurechtzukommen. Und wenn Sie sich den ./configureBefehl ansehen, können Sie sehen, dass diese Person verwendet --with-libxml-dir=/usr. Obwohl die Informationen als für PHP 5.5.24 angegeben werden, stelle ich mir vor, dass der Prozess für PHP 5.6.14 ähnlich, wenn nicht sogar gleich sein sollte. Hier ist ihr vollständiger ./configureBefehl als Referenz:

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

Antwort2

Sofern Sie nicht unbedingt eine neuere Version benötigen, ist PHP 5.5.27 standardmäßig in OS X El Capitan enthalten.

Sie können die Kommentierung (# entfernen) vor der Zeile LoadModule php5_module libexec/apache2/libphp5.soin httpd.conf aufheben ( sudo nano /etc/apache2/httpd.conffür den Zugriff verwenden).

verwandte Informationen