getimagesize($img)
にしようとしているときに
イメージが存在しない場合は、エラーが発生します。ファイルが存在するかどうか最初にチェックするのではなく、エラーを処理するだけです。getimagesizeがファイルを見つけることができないときのハンドルエラー
どうやってtry catch
が動作するのか分かりませんが、私は次のようにします:
try: getimagesize($img) $works = true
catch: $works = flase
getimagesize($img)
にしようとしているときに
イメージが存在しない場合は、エラーが発生します。ファイルが存在するかどうか最初にチェックするのではなく、エラーを処理するだけです。getimagesizeがファイルを見つけることができないときのハンドルエラー
どうやってtry catch
が動作するのか分かりませんが、私は次のようにします:
try: getimagesize($img) $works = true
catch: $works = flase
:
このコード:
if ($data = getimagesize('not-existing.png')) {
echo "OK";
} else {
echo "NOT OK";
}
はあなたに
Warning: getimagesize(not-existing.png) [function.getimagesize]:
failed to open stream: No such file or directory
を取得します
ソリューションは、そのエラーをマスクするために、@ operatorを使用することです:
if ($data = @getimagesize('not-existing.png')) {
echo "OK";
} else {
echo "NOT OK";
}
ファイルが存在しないため、$データがまだfalseになります。警告は表示されません。
もう1つの解決策は、getimagesizeを使用する前にcheck if the file existsです。このような何かをするだろう:ファイルが存在しない場合、getimagesizeが呼び出されない
if (file_exists('not-existing.png') &&
($data = getimagesize('not-existing.png'))
) {
echo "OK";
} else {
echo "NOT OK";
}
-
まだ何の警告を意味しており、この解決策は、あなたがイメージに使用すべきものではありません別のサーバーに接続し、HTTP経由でアクセスします(この場合は、リモートサーバーへの2つの要求を意味するため)。
ローカル画像の場合は、これは大丈夫でしょう。私が見るのは、読み取りエラーがマスクされていないときに生成される通知だけです。
最後に:
display_errors
を参照して、その;-)地獄に行く汚いハッカーゾンビに電話してください。しかし、私は通常、警告出力を出力バッファにキャッチし、バッファをチェックすることでこの問題を回避します。私が言ったように、
ob_start();
$data = getimagesize('not-existing.png');
$resize_warning = ob_get_clean();
if(!empty($resize_warning)) {
print "NOT OK";
# We could even print out the warning here, just as PHP would do
print "$resize_warning";
} else {
print "OK"
}
プログラマの天国で居心地の良い場所を取得する方法はないが、それが機能不全エラー処理に来るとき、男は男が何をしている何をしなければならない。これを試してみてください。
あなたは地獄に行く汚いハッカーゾンビです。 – Seb
このような古いトピックを作成して申し訳ありません。最近、同様の問題が発生し、代わりにこのトピックが見つかりました。宗教上の理由から、私は「@」が悪い判断だと思う。file_exists()は、ファイルは、ファイルがちょうどメソッドの呼び出しの間に削除されることがありますよう、getimagesize()はまだ、失敗する可能性が存在するよう指示すると、
function exception_error_handler($errno, $errstr, $errfile, $errline) {
throw new Exception($errstr);
}
set_error_handler("exception_error_handler");
try {
$imageinfo = getimagesize($image_url);
} catch (Exception $e) {
$imageinfo = false;
}
マインドます:そして、私はそれが次のようになり、別の解決策を見つけました。卑劣なことはありませんが、最悪の瞬間に起こります... – ya23
@ ya23:true;しかし、あなたは非常に不運にならなければならないでしょう^^そして、私は@でマスキングエラーを好きではありません:もしあなたがそれを使用していて問題があるなら、それは一般的にすぐにデバッグするのに苦労します.-( –
@かなり汚い:) – Gigala