【发布时间】:2011-01-09 20:13:35
【问题描述】:
假设我有一个图像的 URL,并且在服务器配置中禁用了 URL 文件访问,这不是我可以(或想要)更改的东西,有没有一种简单的方法可以使用 PHP 来获取它的高度/宽度? 如果可能的话,我宁愿不使用 javascript。
【问题讨论】:
-
您有文件系统访问权限吗?
假设我有一个图像的 URL,并且在服务器配置中禁用了 URL 文件访问,这不是我可以(或想要)更改的东西,有没有一种简单的方法可以使用 PHP 来获取它的高度/宽度? 如果可能的话,我宁愿不使用 javascript。
【问题讨论】:
嗯,所以您要通过网络将图像拉入您的 PHP 应用程序“查找”大小,然后大概发出一个带有该大小的 HTML img?对我来说似乎有点时髦。
【讨论】:
为了检查远程图像,您必须以某种方式请求它。你无法确定你看不到的东西的属性。如果您的 PHP 安装禁用了远程文件访问,您可能必须将其移植到系统级进程,例如 wget、cURL 或 ftp。
如果您的主机禁用了远程文件访问,他们可能也禁用了 shell 访问,但作为示例,您可以执行以下操作:
exec("wget ".$url);
另一种选择可能是使用built-in cURL package,如果通过一些奇怪的配置它已安装并处于活动状态,尽管没有远程文件访问权限。
如果你能找到从远程服务器下载图像的方法,你可以在上面使用getimagesize()。
【讨论】:
这实际上没有多大意义,因为如果您可以在网页上查看图像,则应该可以通过 URL 直接访问该图像。换句话说,为什么你会有一个无法通过 url 访问的图像的 url?
无论如何,您可以使用任意数量的 http/url 库在请求的标头中设置用户代理。从本质上讲,您欺骗服务器相信浏览器正在访问文件,而不是匿名服务。
这是您可以用于此目的的browser user agents 列表。
【讨论】: