如何在 Mac OS X 10.11(El Capitan)上安装 PHP 5.6.14?

如何在 Mac OS X 10.11(El Capitan)上安装 PHP 5.6.14?

我最近从 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 beta 版存在问题,关键问题与此有关libxml2。他们对 Homebrew 的建议是运行以下brew link命令:

brew link libxml2 --force

但是如果您从纯源代码进行编译,则不能 100% 确定将如何处理。

话虽如此,我发现了类似的问题锯木要诀—标题很搞笑“如果 libxml2 是个混蛋该怎么办”—线索明确指向 LibXML2 的东西,像这样:

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

但——当然——那将是 Nokogiri 的配置选项。但看看PHP 官方文档解释如下:

可选--with-libxml-dir指令用于指定在编译 PHP 的系统上,否则只会扫描默认位置。

因此知道它似乎添加--with-libxml-dir到您的./configure命令中(具有如下所示的路径设置)应该可以工作:

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

话虽如此,这个人的网站上有一个很好的教程关于如何在 Mac OS X 中编译 PHP 5.5.24,该版本已更新以适应 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 一起提供。

您可以取消注释(删除#)httpd.conf(用于访问)LoadModule php5_module libexec/apache2/libphp5.so中的行之前的内容。sudo nano /etc/apache2/httpd.conf

相关内容