在 OS X 10.7.5 Lion 上将 PHP 升级到 5.4.14

在 OS X 10.7.5 Lion 上将 PHP 升级到 5.4.14

我正在尝试在 Mac 上升级 PHP。我已经下载了 PHP 5.4.14,配置命令没有任何问题:

。/配置 \
 --prefix=/usr \
 –mandir=/usr/share/man \
 --infodir=/usr/share/info \
 --sysconfdir=/private/etc \
 --with-apxs2=/usr/sbin/apxs \
 --启用-cli \
 --with-config-file-path=/etc \
 --with-libxml-dir=/usr \
 --with-openssl=/usr \
 --with-kerberos=/usr \
 --with-zlib=/usr \
 --启用-bcmath \
 --with-bz2=/usr \
 --启用日历 \
 --with-curl=/usr \
 --启用-dba \
 --启用-exif \
 --启用-ftp \
 --with-gd \
 --with-freetype-dir=/usr/X11 \
 --with-jpeg-dir=/BinaryCache/apache_mod_php/apache_mod_php-66.6~1/Root/usr/local\
 --with-png-dir=/usr/X11 \
 --启用-gd-native-ttf \
 --with-icu-dir=/usr \
 --with-iodbc=/usr \
 --with-ldap=/usr \
 --with-ldap-sasl=/usr \
 --with-libedit=/usr \
 --启用-mbstring \
 --启用-mbregex \
 --with-mysql=mysqlnd \
 --with-mysqli=mysqlnd \
 --无梨 \
 --with-pdo-mysql=mysqlnd \
 --with-mysql-sock=/var/mysql/mysql.sock \
 --with-readline=/usr \
 --启用-shmop \
 --with-snmp=/usr \
 --启用-soap \
 --启用套接字 \
 --启用-sysvmsg \
 --启用-sysvsem \
 --启用-sysvshm \
 --with-tidy \
 --启用-wddx \
 --with-xmlrpc \
 --不带图标转换 \
 --with-xsl=/usr \
 --启用-zip \
 --with-pcre-regex=/usr \
 --with-pgsql=/usr \
 --with-pdo-pgsql=/usr

当我这样做时,make test我得到了一大堆东西,最后是以下内容:

体系结构 x86_64 的未定义符号:
  “_php_pcre_compile”,引用自:
      php_pcre.o 中的 _pcre_get_compiled_regex_cache
  “_php_pcre_exec”,引用自:
      php_pcre.o 中的 _php_pcre_grep_impl
      php_pcre.o 中的 _php_pcre_replace_impl
      php_pcre.o 中的 _php_pcre_match_impl
      php_pcre.o 中的 _php_pcre_split_impl
      softmagic.o 中的 _check_fmt
      logical_filters.o 中的 _php_filter_validate_email
      logical_filters.o 中的 _php_filter_validate_regexp
      ...
  “_php_pcre_free”,引用自:
      php_pcre.o 中的 _php_pcre_match_impl
  “_php_pcre_fullinfo”,引用自:
      php_pcre.o 中的 _pcre_get_compiled_regex_cache
      php_pcre.o 中的 _php_pcre_grep_impl
      php_pcre.o 中的 _make_subpats_table
      php_pcre.o 中的 _php_pcre_replace_impl
      php_pcre.o 中的 _php_pcre_match_impl
      php_pcre.o 中的 _php_pcre_split_impl
  “_php_pcre_get_substring_list”,引用自:
      php_pcre.o 中的 _php_pcre_match_impl
  “_php_pcre_maketables”,引用自:
      php_pcre.o 中的 _pcre_get_compiled_regex_cache
  “_php_pcre_study”,参考自:
      php_pcre.o 中的 _pcre_get_compiled_regex_cache
  “_php_pcre_version”,引用自:
      php_pcre.o 中的 _zm_info_pcre
      php_pcre.o 中的 _zm_startup_pcre
ld:未找到适用于架构 x86_64 的符号
clang:错误:链接器命令失败,退出代码为 1(使用 -v 查看调用)
制作:*** [libs/libphp5.bundle] 错误 1

我已将系统上的 PCRE 更新至版本 8.32,我需要它是因为一些 zlib 依赖项以及其他内容以及通用 perl 正则表达式内容。我不知道为什么我的测试make test无法通过。

任何能帮助解决此问题的帮助都将不胜感激。

答案1

选项1

只需删除--with-pcre-regex选项即可。现代版本的 PHP 附带 PCRE 库(位于 ext/pcre/pcrelib),并被视为核心 PHP 构建的一部分。

php.net

笔记:

从 PHP 5.3.0 开始,此扩展无法被禁用,因此始终存在。

仍然可以使用 --with-pcre-regex=DIR 针对外部 PCRE 库进行构建

选项 2

如上文所述,您可以使用外部 PCRE 库构建 PHP。为此,--with-pcre-regex使用 返回的值更新了选项pcre-config --prefix

相关内容