我正在尝试在 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
。