1

AppFogPaaSシステムでWordPressを使用しようとしています。残念ながら、AppFogには永続的なストレージがないため、データベース外のすべてのコンテンツを外部システム(S3など)に保存する必要があります。すべてのWordPressメディアをS3にプッシュするプラグインを正常に使用していますが、一部の画像の読み込みに問題があります。

調査するために、次のスクリプトを展開しました。

// get the image name from the query string 
// and make sure it's not trying to probe your file system 
if (isset($_GET['pic'])) { 
    $pic = $_GET['pic'];

    // get the filename extension 
    $ext = substr($pic, -3);

    // set the MIME type 
    switch ($ext) { 
        case 'jpg': 
            $mime = 'image/jpeg';
            break;
        case 'gif': 
            $mime = 'image/gif';
            break;
        case 'png': 
            $mime = 'image/png';
            break;
        default: 
            $mime = false;
     }
     // if a valid MIME type exists, display the image 
    // by sending appropriate headers and streaming the file 
    if ($mime) { 
        header('Content-type: '.$mime);
        header('Content-length: '.filesize($pic));
        $file = fopen($pic, 'rb');
        if ($file) { 
            fpassthru($file);
            exit;
         }

     }
 }

 ?>

これにより、PHPで画像を読み書きする能力を直接テストできます。このプロキシスクリプトは、約10KB未満の画像に対して完全に機能します。つまり、ブラウザでスクリプトを開いて、S3バケット内の「小さな」画像ファイルを指すと、それを見ることができます。

ただし、「大きな」ファイル(10KBを超えるもの)を読み込もうとすると、エラーが発生します。Firefoxでは、それは次のとおりです。

The image “http://myssite.com/iproxy.php?pic=http://aws.amazon.com%2Fmybucket%2Fwp-content%2Fuploads%2F2013%2F01%2Fmylargeimage.png” cannot be displayed because it contains errors.

私はこれと何時間も取り組んできましたが、何も理解できないようです。output_bufferingをより大きな値に変更しようとしましたが、それは役に立ちませんでした。

ヒントをいただければ幸いです。

4

0 に答える 0