Как установить PHP 5.6.14 на Mac OS X 10.11 (El Capitan)?

Как установить PHP 5.6.14 на Mac OS X 10.11 (El Capitan)?

Недавно я обновился с OS X Yosemite до El Capitan, и мне нужно было переустановить PHP. Поэтому я скачал php (версия 5.6.14), запустил файл ./configure, а затем запустил sudo make. Однако при этом компиляция завершается со следующими сообщениями:

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

Я никогда не сталкивался с этим сообщением на Mac OS X 10.9.5 (Yosemite).

Как мне устранить это сообщение? Я пробовал отключить System Integrity Protection (SIP), но безрезультатно.

решение1

Согласно этому отчету GitHub о проблеме, связанной со сборкой PHP 5.6.11 beta на Mac OS X 10.11 (El Capitan), ключевая проблема связана с libxml2. Их рекомендация в случае Homebrew — выполнить эту brew linkкоманду:

brew link libxml2 --force

Но если вы компилируете из чистого исходного кода, не уверен на 100%, как это будет реализовано.

Тем не менее, я нашел похожую проблему, обсуждаемую в этомСуть Нокогири— с забавным названием «Что делать, если libxml2 ведет себя как придурок» — и подсказки явно указывают на то, что это относится к LibXML2, например:

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

Но, конечно, это касается параметров конфигурации Nokogiri. Но, глядя наофициальная документация PHPпоясняет следующее:

Необязательный--with-libxml-dirдиректива используется для указания местоположенияlibxmlв системе, в которой компилируется PHP, в противном случае сканируются только расположения по умолчанию.

Итак, зная, что это похоже на добавление --with-libxml-dirк вашей ./configureкоманде — что-то с путем, установленным как показано ниже — должно сработать:

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

Тем не менее,На сайте этого человека есть хорошее руководствоо том, как скомпилировать PHP 5.5.24 в Mac OS X, который был обновлен для работы с Mac OS X 10.10.5, а также Mac OS X 10.11. И если вы посмотрите на команду, ./configureвы увидите, что этот человек использует --with-libxml-dir=/usr. Хотя информация представлена ​​как для PHP 5.5.24, я полагаю, что процесс для PHP 5.6.14 должен быть похожим, если не таким же. Вот их полная ./configureкоманда для справки:

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

решение2

Если вам не нужна более новая версия, PHP 5.5.27 поставляется в комплекте с OS X El Capitan.

Вы можете раскомментировать (удалить #) перед строкой LoadModule php5_module libexec/apache2/libphp5.soвнутри httpd.conf (используйте sudo nano /etc/apache2/httpd.confдля доступа).

Связанный контент