PHP中的远程图像大小和维度获取HTTP错误

Mad*_*ota 3 php amazon-s3 gdlib remote-server getimagesize

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

`getimagesize($path)`
Run Code Online (Sandbox Code Playgroud)

这就是错误.

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
Run Code Online (Sandbox Code Playgroud)

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

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

检查 php.ini

Directive           Local Value     Master Value
allow_url_fopen     On              On
Run Code Online (Sandbox Code Playgroud)

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

注意我100%确定远程图像路径是否正确.

Ben*_*n D 5

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

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

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