Обновите PHP до 5.4.14 на OS X 10.7.5 Lion

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 не пройдет.

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

Mike Kormendy
источник
Вы пробовали компилировать с PCRE в качестве общей библиотеки? --with-pcre-regex=shared,/usr, Вам может понадобиться make clean первый.
emcconville
Нет, я не пробовал это, но я буду! В качестве дополнительного примечания, вы можете кратко объяснить или указать мне на конкретный ресурс, который обсуждает, почему это может иметь место?
Mike Kormendy
Я только что сделал make clean и затем изменил команду configure, вывод сказал следующее: checking for PCRE headers location... configure: error: Could not find pcre.h in shared,/usr
Mike Kormendy
Я обнаружил, что некоторые библиотеки уже на OS X, но без заголовочных файлов. shared,/path опция позволяет расширениям использовать предустановленную библиотеку системы. Для PCRE --with-prec-refex мой не нужен поскольку PCRE включен в php-5.3 +. Где установлен PCRE-8.32? Вы можете найти его, выполнив pcre-config --prefix и использовать обратный путь в качестве --with-prec-refex аргумент.
emcconville
Я вообще не собираюсь пытаться включить команду настройки --with-pcre-regex и посмотреть, если это работает.
Mike Kormendy

Ответы:

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,

emcconville
источник
Опечатка: «Для этого, Обновить --w я Опция th-pcre-regex со значением, возвращаемым pcre-config --prefix. "
Mike Kormendy
На самом деле, опечатка все еще там. : ^ /
marklark