1

我正在尝试在 AppFog PaaS 系统上使用 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