7

最近、Lion OS X 64ビットでPHPをバージョン5.4.1にアップグレードしましたが、Codeigniterでエラーがスローされます。

Severity: Warning

Message: preg_match(): Compilation failed: unknown option bit(s) set at offset 0

Filename: core/Utf8.php

Line Number: 44

私は問題をグーグルで検索しました。これはPHPのPCRElibの問題のようです。このチュートリアルに従って、自作でpcreをインストールする方法を説明しました(pcre 8.30を実行しています)。これでは問題は解決しませんでした。

解決策を探してみましたが、役立つ解決策は見つかりませんでした。このPCRE libの問題を修正する方法はありますか?

編集:この質問を編集して、私のインストールが何であったかを思い出させてください:

./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=/usr \
--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 \
--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 \
--with-iconv-dir=/usr \
--with-xsl=/usr \
--enable-zip \
--with-pgsql=/usr \
--with-pdo-pgsql=/usr \
--with-mcrypt=/usr/local/lib
4

4 に答える 4

6

PHP 5.4.1をPCREバージョン8.12(PHP 5.4.1に含まれているバージョンだと思います)で動作させることができました。質問のコメントに前後にリストされた後、私はPCREフラグなしでPHPをコンパイルし、PHPにデフォルトを使用させることにしました。デフォルトを使用することにより、8.12でコンパイルされます。

さて、フォローアップの質問は、もちろん、なぜこれが起こるのかです。私が提供したフラグを使用して、8.30がPHPでコンパイルされることを期待しています。しかし、この時点で、私は物事が機能していることを嬉しく思います。

以下は、あなたが最後から試してみたい場合に備えて、私が機能するようになった構成オプションです。

./configure \
--prefix=/usr \
--mandir=/usr/share/man \
--infodir=/usr/share/info \
--sysconfdir=/private/etc \
--with-apxs2=/usr/local/apache/bin/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=/usr \
--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 \
--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 \
--with-iconv-dir=/usr \
--with-xsl=/usr \
--enable-zip \
--with-pgsql=/usr \
--with-pdo-pgsql=/usr \
--with-mcrypt=/usr
于 2012-04-29T21:14:08.767 に答える
3

を使用して Linux マシンで PHP と PCRE を更新することで、この問題を解決しましたyum update

PHP はバージョン 5.3.17 に更新され、PCRE はバージョン 8.21-5.3amzn1 に更新されました (Amazon EC2 インスタンスで実行しています)。

于 2012-10-19T01:36:10.310 に答える
0

私のソリューションは、@bigZeroが提案したものに近いものでした。

pcre v8.12をbrewにインストールしようとしたときに、リポジトリから(おそらく)消去されたためにインストールできなかったため、brewで動作させることができませんでした。つまり、に表示されますbrew versions pcreが、インストールしようとすると、 ftp: //ftp.csx.cam.ac.uk/pub/software/programming/pcre/からダウンロードできませんでした。

そのため、 http://www.pcre.orgからpcre 8.12ソースコードをダウンロードし、コンパイルしてインストールする必要がありました。次の構成を使用しました。./configure --prefix=/usr --enable-utf8 --enable-unicode-properties

オプションなしでphp(私の場合は5.4.10)を再コンパイルしようとしました--with-pcre-regex(@ scott-harwellによって提案されました。しかし、コンパイル中に失敗しました。追加--with-pcre-regex=/usr/して、最終的に機能しました。

于 2012-12-27T17:27:12.747 に答える
0

httpdを再コンパイルします。その前に、システムにPCREのバージョンが1つしかないことを確認してください。

于 2012-10-10T20:33:38.237 に答える