%20%E3%81%AB%20PHP%205.6.14%20%E3%82%92%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB%E3%81%99%E3%82%8B%E3%81%AB%E3%81%AF%E3%81%A9%E3%81%86%E3%81%99%E3%82%8C%E3%81%B0%E3%82%88%E3%81%84%E3%81%A7%E3%81%99%E3%81%8B%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 に対応するように更新された PHP 5.5.24 を Mac OS X でコンパイルする方法について。コマンドを確認すると、./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
アクセスに使用)。