%EC%97%90%20PHP%205.6.14%EB%A5%BC%20%EC%96%B4%EB%96%BB%EA%B2%8C%20%EC%84%A4%EC%B9%98%ED%95%A9%EB%8B%88%EA%B9%8C%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)에서는 이 메시지를 본 적이 없습니다.
이 메시지를 어떻게 해결합니까? SIP(시스템 무결성 보호)를 비활성화해 보았지만 소용이 없었습니다.
답변1
이 GitHub 문제 보고서에 따르면 Mac OS X 10.11(El Capitan)에서 PHP 5.6.11 베타를 빌드하는 것과 관련된 주요 문제는 libxml2
. Homebrew의 경우 다음 brew link
명령을 실행하는 것이 좋습니다.
brew link libxml2 --force
그러나 순수 소스 코드에서 컴파일하는 경우 어떻게 처리될지 100% 확신할 수 없습니다.
즉, 나는 이것에서 논의된 비슷한 문제를 발견했습니다.노코기리 요지—"libxml2가 바보라면 어떻게 해야 할까요?"라는 유쾌한 제목의 —다음과 같은 LibXML2 항목을 명시적으로 가리키는 단서가 있습니다.
--with-xml2-include=/usr/local/include/libxml2
하지만 물론 이는 Nokogiri의 구성 옵션에 대한 것입니다. 하지만 보면공식 PHP 문서다음을 설명합니다:
선택 사항--with-libxml-dir지시문은 위치를 지정하는 데 사용됩니다.libxmlPHP가 컴파일되는 시스템에서 그렇지 않으면 기본 위치만 스캔됩니다.
따라서 아래와 같이 경로가 설정된 명령 --with-libxml-dir
에 추가하는 것으로 보인다는 것을 알면 작동합니다../configure
--with-libxml-dir=/usr/local/include/libxml2
즉,이 사람의 웹사이트에 좋은 튜토리얼이 있어요Mac OS X 10.10.5 및 Mac OS X 10.11에 대응하도록 업데이트된 Mac OS X에서 PHP 5.5.24를 컴파일하는 방법에 대해 설명합니다. 그리고 명령어를 보면 ./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
액세스에 사용) 앞의 주석 처리를 해제(# 제거)할 수 있습니다.