1

Недавно я обновил 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).

Как бы я разрешил это сообщение? Я пытался отключить защиту целостности системы (SIP) безрезультатно.

2 ответа2

2

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

brew link libxml2 --force

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

Тем не менее, я нашел подобный вопрос , который обсуждался в этой Nokogiri Gist -hilariously под названием «Что делать , если libxml2 в настоящее время придурком» -И улики указывают явно указывая на LibXML2 вещи , как это:

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

Но - конечно - это было бы для параметров конфигурации Нокогири. Но просмотр официальной документации 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'
1

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

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .