3

我在 Amazon S3 中托管图像。我将 URLstatic.example.com指向 S3 Bucket。当我在浏览器中直接输入网址http://static.example.com/path/mypic.png时,图像已经存在,我也可以查看和下载。但是当我想在 PHP 中获取图像的大小和尺寸时,它会显示此错误。

`getimagesize($path)`

这就是错误。

A PHP Error was encountered

Severity: Warning

Message: getimagesize(http://static.example.com/path/mypic.png) [function.getimagesize]: failed to open stream: HTTP request failed! HTTP/1.0 404 Not Found

Filename: views/template.php

Line Number: 98

我可以在上传时将大小存储在数据库中,但这不是我的解决方案,我在 S3 中已经有 1000x 图像。当我这样做时@ getimagesize($path),错误没有显示,但没有大小,没有尺寸。

我还查看了 PHP 文档getimagesize (URL)。链接示例假设支持远程图像。

检查php.ini

Directive           Local Value     Master Value
allow_url_fopen     On              On

我哪里错了?有没有更好的方法来获取 PHP 中远程图像的图像大小和尺寸?

注意我 100% 确定远程图像路径是正确的。

4

1 回答 1

5

检查你的php.ini文件。最可能的原因是您的服务器未设置为enable allow_url_fopen. 作为安全预防措施,有时默认禁用此设置。

另外,顺便说一句,一旦你开始工作,你可能想要确保你正在缓存结果,因为getimagesize会在返回结果之前下载整个远程图像,这会给你的服务器带来很大的拖累。

在最后一点上,您可能想按照baba的建议查看FastImage ......如果这个问题不是,它可能会完全避免这个问题。enable allow_url_fopen

于 2013-03-01T05:55:00.203 回答