0

PHP と ImageMagick (http://net.tutsplus.com/tutorials/php/create-instagram-filters-with-php/) を使用して Instagram にあるゴッサム機能を追加しようとしています。指定されたスクリプトは機能しませんが、コマンドが行います。コマンドを生成してコマンド ラインにコピー アンド ペーストすると、正常に動作します。しかし、exec() でそれらを実行しようとすると、機能しません。与えられた出力を見たところ、コマンドが見つからないと表示されています。php.ini でセーフモードをオフにしており、exec() は無効な機能ではありません。アンパサンドと '2>&1' を追加しようとしましたが、役に立ちませんでした。exec() がコマンドを理解できないのはなぜですか? ここにスクリプトがあります

function gotham($image) {
    exec("convert " . $image . " -modulate 120,10,100 -fill '#222b6d' -colorize 20 -gamma 0.5 -contrast -contrast " . $image . " 2>&1", $output1);
    exec("convert " . $image . " -bordercolor black -border 20x20 " . $image . " 2>&1", $output2);
}

$output 変数の var_dump から得られるものは次のとおりです。

array(1) { [0]=> string(30) "sh: convert: command not found" } array(1) { [0]=> string(30) "sh: convert: command not found" }
4

2 に答える 2

0

まず、システムに imagemagick がインストールされている場所を特定します。これは、ターミナルから実行して実行できます

whereis convert

アクセス許可の問題をトラブルシューティングするには、Web サーバーを実行しているユーザーとしてログインします。これは通常apache/ nobody/www-dataディストリビューションやセットアップによって異なります。ターミナルで次を実行します。

su - www-data

上記は、現在のユーザーを Web サーバーを実行しているユーザーに切り替えます。私の場合、これwww-data

ここconvertで、フル パスを使用してコマンドを実行します (whereis convert以前の from および php スクリプトの引数によって決定されます)。権限の問題がなければ、これは正常に実行されるはずです。ほとんどの場合、これを php から実行した場合と同じエラーが表示されます。 Web サーバーのスクリプト。

実行して、変換プログラムの権限を確認します

ls -l `whereis convert`
于 2012-04-06T07:25:27.733 に答える