2

Я пытаюсь обновить PHP на моем Mac. Я скачал PHP 5.4.14 и у меня нет проблем с командой настройки:

./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-libxml-dir=/usr \
 --with-openssl=/usr \
 --with-kerberos=/usr \
 --with-zlib=/usr \
 --enable-bcmath \
 --with-bz2=/usr \
 --enable-calendar \
 --with-curl=/usr \
 --enable-dba \
 --enable-exif \
 --enable-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 \
 --enable-gd-native-ttf \
 --with-icu-dir=/usr \
 --with-iodbc=/usr \
 --with-ldap=/usr \
 --with-ldap-sasl=/usr \
 --with-libedit=/usr \
 --enable-mbstring \
 --enable-mbregex \
 --with-mysql=mysqlnd \
 --with-mysqli=mysqlnd \
 --without-pear \
 --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 \
 --without-iconv \
 --with-xsl=/usr \
 --enable-zip \
 --with-pcre-regex=/usr \
 --with-pgsql=/usr \
 --with-pdo-pgsql=/usr

Когда я делаю make test я получаю длинный список вещей со следующим:

Undefined symbols for architecture x86_64:
  "_php_pcre_compile", referenced from:
      _pcre_get_compiled_regex_cache in php_pcre.o
  "_php_pcre_exec", referenced from:
      _php_pcre_grep_impl in php_pcre.o
      _php_pcre_replace_impl in php_pcre.o
      _php_pcre_match_impl in php_pcre.o
      _php_pcre_split_impl in php_pcre.o
      _check_fmt in softmagic.o
      _php_filter_validate_email in logical_filters.o
      _php_filter_validate_regexp in logical_filters.o
      ...
  "_php_pcre_free", referenced from:
      _php_pcre_match_impl in php_pcre.o
  "_php_pcre_fullinfo", referenced from:
      _pcre_get_compiled_regex_cache in php_pcre.o
      _php_pcre_grep_impl in php_pcre.o
      _make_subpats_table in php_pcre.o
      _php_pcre_replace_impl in php_pcre.o
      _php_pcre_match_impl in php_pcre.o
      _php_pcre_split_impl in php_pcre.o
  "_php_pcre_get_substring_list", referenced from:
      _php_pcre_match_impl in php_pcre.o
  "_php_pcre_maketables", referenced from:
      _pcre_get_compiled_regex_cache in php_pcre.o
  "_php_pcre_study", referenced from:
      _pcre_get_compiled_regex_cache in php_pcre.o
  "_php_pcre_version", referenced from:
      _zm_info_pcre in php_pcre.o
      _zm_startup_pcre in php_pcre.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
make: *** [libs/libphp5.bundle] Error 1

Я обновил PCRE в системе до версии 8.32, и мне это требуется из-за некоторых зависимостей zlib, помимо прочего, и общих вещей с регулярными выражениями perl. Я в недоумении, почему мой make test не пройдет.

Любая помощь будет оценена, чтобы решить эту проблему.

1 ответ1

2

Опция 1

Просто удалите параметры --with-pcre-regex . Современная версия PHP поставляется с библиотекой PCRE (находится в ext/pcre/pcrelib) и считается частью основной сборки PHP.

С php.net,

Замечания:

Начиная с PHP 5.3.0 это расширение не может быть отключено и поэтому всегда присутствует.

По-прежнему возможно выполнить сборку из внешней библиотеки PCRE с помощью --with-pcre-regex = DIR

Вариант 2

Как отмечается выше, вы можете собрать PHP с внешней библиотекой PCRE. Для этого обновили параметр --with-pcre-regex значение, возвращаемое pcre-config --prefix .

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .