Aggiorna PHP alla 5.4.14 su OS X 10.7.5 Lion


2

Sto cercando di aggiornare PHP sul mio Mac. Ho scaricato PHP 5.4.14 e non ho problemi con il comando di configurazione:

./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 \
 --senza-pera \
 --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-riordinato \
 --enable-wddx \
 --with-xmlrpc \
 --without-iconv \
 --with-xsl = / usr \
 --enable-zip \
 --with-pcre-regex = / usr \
 --with-pgsql = / usr \
 --with-PDO-pgsql = / usr

Quando lo faccio, make testricevo una lunga serie di cose con quanto segue alla fine:

Simboli non definiti per l'architettura x86_64:
  "_php_pcre_compile", referenziato da:
      _pcre_get_compiled_regex_cache in php_pcre.o
  "_php_pcre_exec", referenziato da:
      _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", referenziato da:
      _php_pcre_match_impl in php_pcre.o
  "_php_pcre_fullinfo", referenziato da:
      _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", referenziato da:
      _php_pcre_match_impl in php_pcre.o
  "_php_pcre_maketables", referenziato da:
      _pcre_get_compiled_regex_cache in php_pcre.o
  "_php_pcre_study", referenziato da:
      _pcre_get_compiled_regex_cache in php_pcre.o
  "_php_pcre_version", referenziato da:
      _zm_info_pcre in php_pcre.o
      _zm_startup_pcre in php_pcre.o
ld: simbolo (i) non trovato per l'architettura x86_64
clang: errore: comando linker non riuscito con codice di uscita 1 (usare -v per vedere l'invocazione)
make: *** [libs / libphp5.bundle] Errore 1

Ho aggiornato PCRE sul sistema alla versione 8.32 e lo richiedo a causa di alcune dipendenze zlib tra le altre cose e roba di espressione regolare perl generale. Sono in perdita sul perché il mio make testnon passerà.

Qualsiasi aiuto sarebbe apprezzato per risolvere questo problema.


Hai provato a compilare con PCRE come libreria condivisa? --with-pcre-regex=shared,/usr. Potrebbe essere necessario make cleanprima.
emcconville,

No, non l'ho provato, ma lo farò! Come nota a margine, puoi spiegare brevemente o indicarmi una risorsa specifica che discute perché questo potrebbe essere il caso?
Mike Kormendy,

Ho appena fatto il clean clean e poi modificato il comando configure, l'output ha detto questo:checking for PCRE headers location... configure: error: Could not find pcre.h in shared,/usr
Mike Kormendy

Ho scoperto che alcune librerie sono già su OS X ma senza i file di intestazione. L' shared,/pathopzione consente alle estensioni di utilizzare la libreria preinstallata dei sistemi. Per PCRE, --with-prec-refex my non è necessario in quanto PCRE è incluso in php-5.3 +. Dove è installato PCRE-8.32? È possibile individuarlo eseguendo pcre-config --prefixe utilizzare il percorso di ritorno come --with-prec-refexargomento.
emcconville,

Non ho intenzione di provare a includere il comando configure --with-pcre-regexe vedere se funziona.
Mike Kormendy,

Risposte:


2

opzione 1

Rimuovi semplicemente le --with-pcre-regexopzioni. La versione moderna di PHP viene fornita con la libreria PCRE (situata in ext / pcre / pcrelib) ed è considerata parte della build principale di PHP.

Da php.net ,

Nota:

A partire da PHP 5.3.0 questa estensione non può essere disabilitata ed è quindi sempre presente.

È ancora possibile creare una libreria PCRE esterna usando --with-pcre-regex = DIR

opzione 2

Come indicato nella nota precedente, è possibile creare PHP con una libreria PCRE esterna. Per fare ciò, ha aggiornato l' --with-pcre-regexopzione con il valore restituito da pcre-config --prefix.


Errore di battitura : "Per fare ciò, aggiornare l'opzione --w i th-pcre-regex con il valore restituito da pcre-config --prefix."
Mike Kormendy,

In realtà, l'errore di battitura è ancora lì. : ^ /
marklark
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.