2012-04-02 25 views
1

これはローカルホスト上では問題なく動作しますが、私のサーバーでは動作しません。私はCentOS 5のボックスにphp-gd(php-gd-5.1.6-32.el5.x86_64)を持っています。誰もが任意のアイデアを持っている場合サムネイルの生成がサーバー上で動作しない - PHPギャラリー

は、私がここで

は、コードの...、それはとてもサーバ上で動作していないだろう、なぜ絶対にないアイデアを持っていません。

<?php 

if (isset($_GET['img'])){ 
    // make thumbnail 
    if(file_exists($_GET['img'])){ 
     ignore_user_abort(true); 
     set_time_limit(120); 
     ini_set('memory_limit', '512M'); 

     $src_size = getimagesize($_GET['img']); 

     if($src_size === false){ 
      die('Thats not an image!'); 
     } 

     $thumb_width = 250; 
     $thumb_height = 200; 

     if($src_size['mime'] === 'image/jpeg'){ 
      $src = imagecreatefromjpeg($_GET['img']); 
     }else if($src_size['mime'] === 'image/png'){ 
      $src = imagecreatefrompng($_GET['img']); 
     }else if($src_size['mime'] === 'image/gif'){ 
      $src = imagecreatefromgif($_GET['img']); 
     } 

     $src_aspect = round(($src_size[0]/$src_size[1]), 1); 
     $thumb_aspect = round(($thumb_width/$thumb_height), 1); 

     if($src_aspect < $thumb_aspect){ 
      //higher 
      $new_size = array($thumb_width,($thumb_width/$src_size[0]) * $src_size[1]); 
      $src_pos = array(0,(($new_size[1] - $thumb_height) * ($src_size[1]/$new_size[1]))/2); 
     }else if ($src_aspect > $thumb_aspect){ 
      //wider. 
      $new_size = array(($thumb_width/$src_size[1]) * $src_size[0],$thumb_height); 
      $src_pos = array(($new_size[0] - $thumb_width)/2, 0); 
     }else{ 
      // same shape 
      $new_size = array($thumb_width, $thumb_height); 
      $src_pos = array(0, 0); 
     } 

     if($new_size[0] < 1) $new_size[0] = 1; 
     if($new_size[1] < 1) $new_size[0] = 1; 

     $thumb = imagecreatetruecolor($thumb_width, $thumb_height); 
     imagecopyresampled($thumb, $src, 0, 0, $src_pos[0], $src_pos[1], $new_size[0], $new_size[1], $src_size[0], $src_size[1]); 

     if($src_size['mime'] === 'image/jpeg'){ 
      imagejpeg($thumb, "thumbs/{$_GET['img']}"); 
     }else if($src_size['mime'] === 'image/png'){ 
      imagepng($thumb, "thumbs/{$_GET['img']}"); 
     }else if($src_size['mime'] === 'image/gif'){ 
      imagegif($thumb, "thumbs/{$_GET['img']}"); 
     } 

     header("Location: thumbs/{$_GET['img']}"); 
    } 
    die(); 
} 

if (is_dir('./thumbs') === false){ 
    mkdir('./thumbs', 0744); 
} 

$images = glob('*.{jpg,jpeg,png,gif}', GLOB_BRACE); 

?> 
<!DOCTYPE> 
<html> 
    <head> 
     <title></title> 
    </head> 
    <body> 
     <div> 
      <?php 

      foreach($images as $image){ 
       if(file_exists("./thumbs/{$image}")){ 
        echo "<a href=\"{$image}\" target=\"_blank\"><img style='border: 4px solid black;' src=\"thumbs/{$image}\" alt=\"{$image}\" /></a>"; 
       }else{ 
        echo "<a href=\"{$image}\" target=\"_blank\"><img style='border: 4px solid black;' src=\"?img={$image}\" alt=\"{$image}\" /></a>"; 
       } 
      } 

      ?> 
     </div> 
    </body> 
</html> 
+0

そのディレクトリのアクセス許可をチェックしましたか? – mishu

+0

スクリプトを実行するときに表示されるエラーの詳細を教えてください。 –

答えて

0

gdライブラリがサーバーにもインストールされていますか?

+0

私はそれがあったかもしれないと思います、私は今それを見ています。 – Hugo

+0

ありがとう! – Hugo

+0

:) ...だからあなたはstackoverflowに新しいですので...私は親切に正しいものとして答えを受け入れるように頼んで...これは私の評判を向上させるだけでなく、あなたの..ありがとう! –

0

私の知るところによれば、これにはいくつかの理由が考えられます。

  1. GDライブラリがインストールされていません - ここからインストール手順を見つけることができます。 http://www.php.net/manual/en/image.installation.php
  2. 許可の問題である可能性があります。サムネイルを作成するには、特定のディレクトリに書き込み権限が必要です。
  3. PHP実行に十分なメモリがありません。ベローズコードを試して、手動でメモリ制限を設定することができます。これを関数の先頭に置きます。 ini_set('memory_limit', -1);そして、結果を返す前に関数の最後にリセットしてください。 ini_restore('memory_limit');
関連する問題