2012-04-26 9 views
6

私は最近、Lion OS X 64bitでPHPをバージョン5.4.1にアップグレードしました。 CodeIgniterの中で:私は、問題をGoogleで検索PHP 5.4 after-install:preg_match():コンパイルに失敗しました:オフセット0で未知のオプションビットが設定されました

Severity: Warning 

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

Filename: core/Utf8.php 

Line Number: 44 

、これはPHPでPCREのLIBに問題があるようだ、よく私は私がやった自作(私はPCRE 8.30を実行している)とのPCREをインストールするために示したthis tutorialを追いましたこれは問題を解決しませんでした。

私は解決策を見いだそうとしましたが、この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 
+0

preg_replaceを使ってCakePHP 2.1を使って同じエラーが発生しました。私はあなたと同じ設定をしています(Lion、PHP 5.4.1、pcre 8.30)。 –

+1

私はちょうど私の最後に何か気づいた。私は8.30の自作ソフトウェアをインストールしていて、config中のパスを参照しているにもかかわらず、phpinfo()はそれを示している。バージョン8.02!私は '問題だ。それがあなたの目的であるかどうかを見てください。今私はそれを8.30を使ってコンパイルする方法を見つけなければなりません。 –

+0

はい、これはまさに私がやったことですが、pcreのhomebrewインストールさえあるにもかかわらず、あなたがディレクトリ '/ usr'をpcreに指定しても、PHPがそれを拾わない理由を理解できません。 – MacMac

答えて

6

私はPHP 5.4.1はPHP 5.4.1に含まれているバージョンであるPCREバージョン8.12(での作業を取得することができました私は信じている)。質問のコメントに記載された前後で、私は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 
+0

うわー!実際にはうまくいきました。私はこれについて何度も感謝します:-) – MacMac

+0

優秀!それはあなたのために働いてうれしいです。同じような問題が発生した場合は、更新されたPCREバージョンでコンパイルする方法を理解してから、投稿してお知らせください! –

+0

私はこの問題を抱えていますが、PCREパスを指定しないと、 '。/ configure'コマンドが失敗します(単に" clang:error:リンカコマンドが終了コード1で失敗しました)。 –

-1

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

3

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

PHPがバージョン5.3.17にアップデートされ、PCREがバージョン8.21-5.3amzn1にアップデートされました(私はAmazon EC2インスタンスで動作しています)。

+0

私は同じ問題を抱えていましたが、この解決法もこの問題を解決しました。私はMacPortsでMac OS Xにいます。私はPHPの最新バージョン(5.3.17)とPCRE(8.31 2012-07-06)を入手するために、 '古いポートのアップグレード 'を使用しました。 – mixable

+1

パッケージマネージャを使用すると、それらのアプリのプリコンパイルされたバージョンが取得されます。したがって、パッケージマネージャーを通過したバージョンが一緒に動作することが期待されます。しかし、この回答は実際には質問には当てはまりません。なぜなら、質問する人は、パッケージマネージャーまたはApple経由で入手できるより新しいバージョンのPHPをコンパイルしようとしているからです。ここでの問題は、任意のPCREバージョンを使用して、Mac上のソースからPHPをコンパイルしようとするときに発生します。 –

0

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

私はbrewでpcre v8.12をインストールしようとしたときにリポジトリから(多分)消去されていたため、できませんでした。私はそれがbrew versions pcreに示されているが、私はインストールしようとしたとき、それはだから私は、http://www.pcre.orgからPCRE 8.12のソースコードをダウンロードし、それをコンパイルしてインストールする必要がありました

ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/からダウンロードすることができなかった、を意味します。最終的に私は、@スコット・ハーウェルにより示唆されるように(--with-pcre-regexオプションなしで(私の場合5.4.10)でPHPを再コンパイルしようとしたが、コンパイル時に、それが失敗した私は--with-pcre-regex=/usr/を追加したより、それ./configure --prefix=/usr --enable-utf8 --enable-unicode-properties

:。。私は、次の構成]を使用しました

関連する問題