ネコになって自由気ままに生きてみたいよねー

とりあえず何か書いていきたいと思っています。

phpのプログラムでハマちゃった

ローカル環境(MAMPを使用)でちょっとしたプログラムをphpで書いていました。

このプログラムは単純に引数に値を渡してshell_execで実行するもの。

下記のような感じ。

 $script = "/usr/local/bin/hoge " . " " . $hoge;
             shell_exec($script);


しかし、いざ実行してみても全然動かない!

そしてエラーの表示

dyld: Symbol not found: __cg_jpeg_resync_to_restart Referenced from: /System/Library/Frameworks/ApplicationServices.framework/Versions/A/
Frameworks/ImageIO.framework/Versions/A/ImageIO Expected in: /Applications/MAMP/Library/lib/libjpeg.62.dylib

なんだこれ〜

そしていろいろと調べてみたところ

こちらにたどりつき、参考にさせていただきました。

http://d.hatena.ne.jp/lyco/?of=1

見てみると(以下引用)

ライブラリがうまくリンク出来てない、って意味でしょうか。
調べまくった末に行き着いた先は、MAMPのフォーラム

2007年3月13日午後6時30分のアダムさんのコメントに注目。

Here is something you can do that may help you out. Comment out the 2 lines in the file /Applications/MAMP/Library/bin/envvars: DYLD_LIBRARY_PATH="/Applications/MAMP/Library/lib:$DYLD_LIBRARY_PATH" export DYLD_LIBRARY_PATH so that they read: #DYLD_LIBRARY_PATH="/Applications/MAMP/Library/lib:$DYLD_LIBRARY_PATH" #export DYLD_LIBRARY_PATH and restart Apache? There is probably some fine tuning necessary but it should help in many cases. Please let us know if it works for you.

「/Applications/MAMP/Library/bin/envvarsというファイルのライブラリパスの指定をコメントアウトして、Apacheを再起動すれば、いいかもよ。」
って事でアダムさんという方がコメントを書いていたようで

とりあえず「
/Applications/MAMP/Library/bin/envvars」の「envvars」を開き

こうなっているのを

DYLD_LIBRARY_PATH="/Applications/MAMP/Library/lib:$DYLD_LIBRARY_PATH"
export DYLD_LIBRARY_PATH

このようにコメントアウト

#DYLD_LIBRARY_PATH="/Applications/MAMP/Library/lib:$DYLD_LIBRARY_PATH"
#export DYLD_LIBRARY_PATH

コメントアウト後、Apacheを再起動したら無事プログラムが動きました。

http://d.hatena.ne.jp/lyco/?of=1 によると

「envvars」は apache起動前に環境変数の設定をするのが目的のようです。

なるほど〜、勉強になりました〜