2009-08-08 10 views
-1

これは数分前に動作していましたが、何が変更されたのかわかりません。 エラーログはviewimg.phpのコードは、以下の問題のファイルがディレクトリに存在しない0で割るPHPイメージサイズ変更スクリプト

<?php 
header ("Content-type: image/jpeg"); 
/* 
JPEG/PNG Image Resizer 
Parameters (passed via URL): 

img = path/url of jpeg or png image file 

percent = if this is defined, image is resized by it's 
      value in percent (i.e. 50 to divide by 50 percent) 

w = image width 

h = image height 

constrain = if this is parameter is passed and w and h are set 
      to a size value then the size of the resulting image 
      is constrained by whichever dimension is smaller 

Requires the PHP GD Extension 

Outputs the resulting image in JPEG Format 

Filename : imgsize.php 
*/ 

$img = $_GET['img']; 
$percent = $_GET['percent']; 
$constrain = $_GET['constrain']; 
$w = $_GET['w']; 
$h = $_GET['h']; 

// get image size of img 
$x = @getimagesize($img); 
// image width 
$sw = $x[0]; 
// image height 
$sh = $x[1]; 

if ($percent > 0) { 
    // calculate resized height and width if percent is defined 
    $percent = $percent * 0.01; 
    $w = $sw * $percent; 
    $h = $sh * $percent; 
} else { 
    if (isset ($w) AND !isset ($h)) { 
     // autocompute height if only width is set 
     $h = (100/($sw/$w)) * .01; 
     $h = @round ($sh * $h); 
    } elseif (isset ($h) AND !isset ($w)) { 
     // autocompute width if only height is set 
     $w = (100/($sh/$h)) * .01; 
     $w = @round ($sw * $w); 
    } elseif (isset ($h) AND isset ($w) AND isset ($constrain)) { 
     // get the smaller resulting image dimension if both height 
     // and width are set and $constrain is also set 
     $hx = (100/($sw/$w)) * .01; 
     $hx = @round ($sh * $hx); 

     $wx = (100/($sh/$h)) * .01; 
     $wx = @round ($sw * $wx); 

     if ($hx < $h) { 
      $h = (100/($sw/$w)) * .01; 
      $h = @round ($sh * $h); 
     } else { 
      $w = (100/($sh/$h)) * .01; 
      $w = @round ($sw * $w); 
     } 
    } 
} 

$im = @ImageCreateFromJPEG ($img) or // Read JPEG Image 
$im = @ImageCreateFromPNG ($img) or // or PNG Image 
$im = @ImageCreateFromGIF ($img) or // or GIF Image 
$im = false; // If image is not JPEG, PNG, or GIF 

if (!$im) { 
    // We get errors from PHP's ImageCreate functions... 
    // So let's echo back the contents of the actual image. 
    readfile ($img); 
} else { 
    // Create the resized image destination 
    $thumb = @ImageCreateTrueColor ($w, $h); 
    // Copy from image source, resize it, and paste to image destination 
    @ImageCopyResampled ($thumb, $im, 0, 0, 0, 0, $w, $h, $sw, $sh); 
    // Output resized image 
    @ImageJPEG ($thumb); 
} 
?> 

NOTE ある

[08-Aug-2009 02:09:20] PHP Warning: readfile(/images/32321249694312.JPG) [<a href='function.readfile'>function.readfile</a>]: failed to open stream: No such file or directory in /home/public_html/viewimg.php on line 82 
[08-Aug-2009 02:09:24] PHP Warning: Division by zero in /home/public_html/viewimg.php on line 49 
[08-Aug-2009 02:09:24] PHP Warning: readfile(/images/49491249704529.png) [<a href='function.readfile'>function.readfile</a>]: failed to open stream: No such file or directory in /home/public_html/viewimg.php on line 82 
[08-Aug-2009 02:09:59] PHP Warning: Division by zero in /home/public_html/viewimg.php on line 49 

読み込みます。手動でアクセスすることはできますが、このスクリプトを使用すると失敗します。

私は、エラーメッセージがかなり明確だと思う
+0

あなたのためにフィルタを使用する必要があり、それらの $ IMG = $ _GET [ 'IMG']; $パーセント= $ _GET ['パーセント']; $ constrain = $ _GET ['constrain']; $ w = $ _GET ['w']; $ h = $ _GET ['h']; a?img =/etc/passwdにはどのようなものがあるのだろうか –

答えて

3

readfile(/images/32321249694312.JPG) : failed to open stream: No such file or directory 

画像には、何らかの理由で開くことができませんでした。したがって、画像のサイズを知るはずのある時点では、それはできません。自由に@演算子を使用しているため、このエラーは報告されず、イメージのサイズを保持するはずの変数はnullです。これは、あなたがnullによっていくつかの番号を分割しようとまでは大丈夫です:

PHP Warning: Division by zero 
+0

これは実際には動作して停止していたため、再度アクセスを防ぐために開くファイルを変更/変更するスクリプトがありますか? – mrpatg

+1

「パッシブ」ファイル読み取り機能を使用しているように見えますが、そこに問題はないはずです。あなたは '@'を離してより多くの失敗チェックを使用する必要があります。これは、どこが間違っているのかを見つけるのに役立ちます。 – deceze

2
// get image size of img 
$x = getimagesize($img); 
if($x!==FALSE) { 
// continue here 
} else { 
// getimagesize failed 
} 
関連する問題