php で変換するシステム コールは、何年も機能していましたが、今年の初めに機能しなくなりました。Putty を使用してコマンド ラインから発行した場合、使用しているすべてのコマンドは正しく機能します。
これをデバッグするために作成したテストphpファイルは
<?
$string = "convert -verbose -resize 200x200 \"startline/main_menu.png\" \"image/temp222_main_menu.png\" ";
passthru($string);
?>
<IMG SRC='image/temp222_main_menu.png ' alt='main_menu'>
出力ファイルは作成されません。私はこの応答を得る
startline/main_menu.png PNG 600x1024 600x1024+0+0 8-bit DirectClass 92.1KB 0.020u 0:00.020
文字列をこれに置き換えると
$string = "convert -version -resize 200x200 \"startline/main_menu.png\" \"image/temp222_main_menu.png\" ";
出力ファイルは作成されますが、サイズは変更されません。
私はこの応答を受け取ります:
Version: ImageMagick 6.6.0-4 2012-04-26 Q16 http://www.imagemagick.org Copyright: Copyright (C) 1999-2010 ImageMagick Studio LLC Features: OpenMP
興味深いことに、これは 2008 年から今年初めまで機能していました。PHP5 と新しいサーバーに切り替えたときだったのかもしれませんが、わかりません。これは 1and1.com で実行されています
1and1 の技術サポートは、outfile が存在しないことが問題であると述べ、ケースをクローズしました。それはあまり役に立ちませんでした。
php.ini ファイルなどに入れる必要があるものがあるかどうか疑問に思っています。
私もこれを試しました: exec("/usr/bin/convert -resize 200x200 image/temp222_main_menu.png"); ?>
ただのメモ。実際にプログラムを実行していて、何らかの出力が返されたことを確認できるように、詳細を入れました。また、正しいファイルをロードしていることも示しています。これが、exec や system の代わりに passthru を使用した理由でもあります。これは単なるテスト スクリプトです。壊れる前に使用していたスクリプトはパススルーを使用していませんでしたが、あまりにも多くの投稿が行われていました。重要なのは、実行される文字列が php では機能しないが、コマンド ラインでは機能するため、正しいことです。