joppotjoppotコピペで絶対動く。2014年5月5日Tweet概要みなさんこんにちはcandleです。今回はちょっと問題が起きてshell_execがうまくいかないときのトラブルシューティングをまとめます。私はMAMPをバージョンアップする前は、phpのshell_execからunixのconvertコマンドを使う事ができたのですが、バージョンアップ後、急に使えなくなりました。やって、そこから解決まで持っていったのかまとめます。今回は、imagemagickのconvertコマンドを使うという前提で話を進めていきます。前提なしサンプルファイルと画像を用意するまずは、shell_execをするphpファイルを作ります。私は「do_shell_exec.php」というファイルを適当なプロジェクトに作成します。私はalltestプロジェクトに置きました。do_shell_exec.phpの中身は下の様にします。"end";?>画像を用意します。下の写真を「do_shell_exec.php」があるフォルダに置いてください。do_shell_execを実行するMAMPを起動して、今作成したphpフィアルのところにいきます。http://localhost:8888/alltest/do_shell_exec.phpもしも、shell_execでconvertが作動すれば、画像のサイズが半分になった50p.jpgというファイルが生成されます。画面をみると、phpのスクリプトは最後まで実行されています。このphpスクリプトが置かれたフォルダ(私の場合はalltestフォルダ)には50p.jpgというファイルが生成されていません。これはつまり、shell_execは動いているが、unixコマンドがうまく実行されてい無い事を表しています。unixコマンドにエラーを吐かせる現在、このサンプルソースは下の様に、unixの実行結果を$resultにおさめています。$result;もしも、unixコマンドでエラーがでれば、確認できるというわけです。エラーを出す為に、do_shell_exec.phpを変更しましょう。"end";?>unixコマンドの最後に「2>&1」というが加えられました。これでエラーがみれます。ブラウザをリロードすると下のようなエラーがでました。found」このエラーはconvertコマンドが見当たらないようという意味です。convertのコマンドがある場所を探して指定しましょう。ターミナルでconvertのある場所を探します。下のコマンドを打ちましょう。convert私のはmacportsでImagemagickを入れているのでopt以下にありますね。brewで入れている人はusr以下にあると思います。いうことで、今調べたパスを用いて、ソースコードを編集します。下のPATHはmacportsでimagemagickを入れた時のconvertコマンドのパスです。自分の調べたものを入れてください。"end";?>では、これでブラウザをリロードしてみましょう。今度は別のエラーがでました。これもMAMPのバージョンや使っているunixコマンドによって違うのですが、だいたいはdylibのエラーだと思われます。下のようなエラーがでるかもしれません。」envvarsを編集するこれらのエラーを出さない為に、MAMPのenvvarsを編集します。私はこのファイルでdylibがどのように影響しているか詳しく知らないのですが、もしも、不具合が生じたい場合は戻しておくと良いでしょう。下のパスに移動します。/Applications/MAMP/Library/bin/この中に「envvars」というファイルがあります。これを適当なエディタで開きます。下の1文をコメントアウトします。DYLD_LIBRAY_PATH=”/Applications/MAMP/Library/lib:$DYLD_LIBRARY_PATH”MAMPの古いバージョンでは下の場所をコメントアウトします。最新版ではif文になっています。その中の同じ文章をコメントアウトしましょう。これで修正は終わりです。サーバを再起動しましょう。ブラウザをリロードすると、今度はエラーメッセージがでてきません。フォルダをみると、無事convertコマンドが実行されて、画像が生成されています。まとめ今回は、convertメソッドをみてきましたが、他のコマンドでも同じだと思います。エラーを出力して、どのような問題が起きているか把握して、対処しましょう。スポンサードリンク「為になったなぁ」と思ったら、シェアお願いします。コメントをキャンセルメールアドレスが公開されることはありません。みなさんこんにちはcandleです。cakephpではphpのライブラリ管理ツールcomposerと連帯して、便利に必要なライブラリを導入できます。みなさんこんにちはcandleです。今回はwordpress4.4で追加された、retinaやレスポンシブに対応した画像のsrcsetの削除の仕方を紹介します。みなさんこんにちはcandleです。今回はCentOSのapacheサーバー上にcakephpを導入してみましょう。みなさんこんにちはcandleです。今回は私がよく使っているソフトウェアの紹介をします。「文章、ブログ、プログラミング、デザイン」に関わっている人に向けてになります。みなさんこんにちはcandleです。eslintの導入をしてみましょう。以前書いたemacsより圧倒的に環境作りが簡単です。Sansフォントウェイトのcss書き方まとめプロフィールベンチャー企業のCTOをやってます。大学時代にプログラミングを始め、javaから入門し、C++へて、PHPへと進み、会社ではRailsを使用。環境設定スポンサードリンクjoppotコピペで絶対動く。