我为媒体文件夹中的图片设置了规则。规则如下:
<FilesMatch ".(jpg|jpeg|gif|png|php)$"> Order Deny,Allow Deny from all </FilesMatch>
这将阻止访问者直接访问图像。现在,每当我调用 php 函数来getimagesize()
从图像中获取一些数据时,它都会返回一个错误,正如您所猜测的:
无法打开流:HTTP 请求失败!HTTP/1.1 403 禁止于:C:.....
现在我的问题是,为什么其他功能和 CMS 的核心文件可以访问我的媒体并生成缩略图和其他内容,而这样的功能却getimagesize()
不能?
我在 CMS 加载过程中调用此函数,因此它具有与 CMS 本身相同的权限。我该如何解决这个问题?我只希望外部访问者无法访问这些文件,而不是我安装的 CMS 本身。
答案1
如果您使用 URL 作为 的参数getimagesize()
,请求将转到 Web 服务器,Web 服务器将按照您的要求执行操作,即拒绝访问。
您需要使用文件系统路径作为参数,或者允许您的 Web 服务器的 IP 地址访问这些文件。您可以在 Apache 中看到该 IP 地址access.log
。