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
をより大きな値に変更しようとしましたが、それは役に立ちませんでした。
ヒントをいただければ幸いです。