UJP - PHPのコンパイルエラーと戦う

Life is fun and easy!

不正IP報告数

Okan Sensor
 
メイン
ログイン
ブログ カテゴリ一覧

  • カテゴリ Macソフト の最新配信
  • RSS
  • RDF
  • ATOM

ブログ - PHPのコンパイルエラーと戦う

PHPのコンパイルエラーと戦う

カテゴリ : 
Apple » Macソフト
ブロガー : 
ujpblog 2014/2/11 23:39
 久しぶりにPHPをコンパイルしていてハマった.久しぶりと言うのは前回2009年なので5年前のサーバ.

 MacPortsでPHP+apacheをこんな風にインストールしていたのだけれどPHPのコンパイルが通らない.
/opt/local/bin/port install php52 @5.2.11 +apache2+mysql5
 こんなエラーがでて止まる.Google先生に聞いてもヒントが無い.

"configure: error: Problem with freetype.(a|so)."

 MacPortsのエラーメッセージでmain.logファイルが表示されるのでこればかり見ていたので解決に時間がかかった.
/opt/local/var/macports/logs/_opt_local_var_macports_sources_rsync.
macports.org_release_ports_lang_php52/php52/main.log

 実はconfigureログを見ればもっとより具体的にエラーがでている.
/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.
macports.org_release_ports_lang_php52/php52/work/php-5.2.17/config.log

 これを見ると不思議なメッセージが.

ld: warning: in /usr/local/lib/libfreetype.dylib, file was built for ppc

 実際,
file /usr/local/lib/libfreetype.dylib
とすると,

/usr/local/lib/libfreetype.dylib: Mach-O dynamically linked shared library ppc

と表示.あれれ?
file /opt/local/lib/libfreetype.dylib
とすれば,

/opt/local/lib/libfreetype.dylib: Mach-O 64-bit dynamically linked shared library x86_64

と返ってくる.つまりMacPortsで参照されるべきなのは/opt/local/libなのに,/usr/local/libを見ていたというオチ.

 そこで直接ライブラリ参照先を指定しようと,こんな感じでconfigureパラメータをエディット.
/opt/local/bin/port edit php52

 しかし認識されない.

 MacPortsだとライブラリ関係は/opt/local/libに入るのだけれど,configureで参照されるライブラリが/usr/local/libになっているという点.
 LD_LIBRARY_PATHにあたるものがMacOS XだとDYLD_LIBRARY_PATHなのでこれを設定するも優先されない. それで何をしたかというと,
mv /usr/local/lib /usr/local/lib.old

 大胆すぎる!でもファイルの中身を見ているとPowerPC用だったり2008年とか2009年の物だったりと,昔mac miniで動かしていたときの名残りのライブラリが残っていた模様.

 そしてコンパイル&インストールは問題なく完了するのだけれど,/opt/local/apache2/bin/apachectl startするとエラーが...
httpd: Syntax error on line 119 of /opt/local/apache2/conf/httpd.conf:
Cannot load /opt/local/apache2/modules/libphp5.so into server:
dlopen(/opt/local/apache2/modules/libphp5.so, 10):
Symbol not found: __cg_jpeg_resync_to_restart\n
Referenced from: /System/Library/Frameworks/ApplicationServices.framework/Versions/A
/Frameworks/ImageIO.framework/Versions/A/ImageIO\n
Expected in: /opt/local/lib/libjpeg.9.dylib\n in /System/Library/Frameworks/ApplicationServices.
framework/Versions/A/Frameworks/ImageIO.framework/Versions/A/ImageIO
 実は/opt/localにMacPortsで入れたJPEGライブラリも古くて,MacOS Xのライブラリをハードリンクする事でどうにかApacheが起動する様になりました.
cd /opt/local/lib
mv libJPEG.dylib libJPEG.dylib.old
mv ibTIFF.dylib ibTIFF.dylib.old
mv ibPng.dylib ibPng.dylib.old

ln -s /System/Library/Frameworks/ApplicationServices.framework/Versions
/A/Frameworks/ImageIO.framework/Versions/A/Resources/libJPEG.dylib libjpeg.dylib
ln -s /System/Library/Frameworks/ApplicationServices.framework/Versions
/A/Frameworks/ImageIO.framework/Versions/A/Resources/libTIFF.dylib libtiff.dylib
ln -s /System/Library/Frameworks/ApplicationServices.framework/Versions
/A/Frameworks/ImageIO.framework/Versions/A/Resources/libPng.dylib libpng.dylib

 調べてみて判ったのはlibjpeg関連ってバージョンアップとかで困っている人が多いと言う事だな...

トラックバック

トラックバックpingアドレス トラックバックpin送信先urlを取得する

広告スペース
Google