OS X 10.6.6 の新規インストールに、同梱されている PHP バージョン (v5.3.3) を使用して、PHP 拡張機能 intl をインストールしようとしています。
拡張機能には ICU が必要であることはわかっているので、homebrew でインストールしました。インストールされている ICU のバージョンは 4.4.1 で、に保存されてい/usr/local/Cellar/icu4c/4.4.1
ます。
intl 拡張機能をインストールするために、次の 2 つの方法を試しました。
pecl インストール
pecl は ICU プレフィックスを尋ねてきました。これは/usr/local/Cellar/icu4c/4.4.1
. configure
問題なく実行されましたが、次のようにmake
中止されました:
/private/var/tmp/apache_mod_php/apache_mod_php-53~1/Build/tmp/pear/temp/intl/collator/collator_class.c:107: エラー: 'static' の重複 make: * [collator/collator_class.lo] エラー1 エラー: `make' が失敗しました
直接ビルド
現在のバージョンの PHP (v5.3.5) をダウンロードし、次のコマンドext/intl
を実行して intl 拡張機能をインストールしました。
phpize &&
configure --enable-intl --with-icu-dir=/usr/local/Cellar/icu4c/4.4.1 &&
make &&
make test &&
sudo make install
これはうまくいったようです。PHP 拡張機能ディレクトリで拡張機能を取得しましたが、エラー メッセージは表示されませんでした。
ファイルは私に教えてくれます:Mach-O 64-bit bundle x86_64
ただし、拡張機能を にロードするとphp.ini
、次のメッセージが表示されました。
PHP 警告: PHP の起動: 無効なライブラリ (PHP ライブラリではない可能性があります) '/usr/lib/php/extensions/no-debug-non-zts-20090626/intl.so' in Unknown on line 0
なぜこれが起こっているのか分かりません。拡張機能が PHP v5.3.5 からインストールされ、私は v5.3.3 を使用しているためだと推測していますが、2 つのバグ修正リリースで互換性が失われるとは考えられません。
何か案は?
更新 2011 年 3 月 16 日:
解決策を見つけました!configure でフラグを明示的に設定する-m64
と (gcc に 64 ビット コードを生成するように指示します)、拡張機能が正しく読み込まれます。
CFLAGS=-m64 CPPFLAGS=-m64 CCASFLAGS=-m64 ./configure