%3F.png)
Недавно я обновился с 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
для доступа).