使用PHP提供图像非常慢

时间:2012-04-24 20:22:35

标签: php performance image .htaccess alias

我允许我的网站用户上传图片,然后我使用PHP脚本提供图像。但是,这明显慢于静态链接。

我使用PHP来提供图像的原因是因为我试图阻止人们访问存储图像的文件夹。

我应该使用.htaccess文件吗?我也在考虑httpd中的ALIAS,但不确定如何使用它或者它是否合适 - 我可以使用它来引用根目录外的文件夹吗?

非常感谢任何帮助。

由于

header("Content-type: " . filetype($file) . "\n"); header("Content-Disposition: inline; filename=\"{$image}\"\n"); header("Content-Length: ".(string)(filesize($file))); @readfile($file);

2 个答案:

答案 0 :(得分:4)

Options -Indexes标记内使用Directory来禁用索引。但是,你应该走得更远。

对于安全性和一般文件系统的卫生,您应该将资源(图像等)保存在与代码分开的目录中。

然后你可以将它添加到你的apache配置中:

<Directory /directory/where/assets/are>
    Order Allow,Deny
    Allow from all
    Options None
    AllowOverride None
    <IfModule mod_php5.c>
        RemoveHandler .php
        RemoveType .php
        php_flag engine off
    </IfModule>
</Directory>

这将禁用任何文件执行作为资产目录中的脚本以及禁用文件列表,但允许任何人下载这些文件。以这种方式保护带有用户上传文件的目录非常重要,因为它们可能会上传您可以托管的恶意PHP脚本。

答案 1 :(得分:3)

使用带有单行的.htaccess文件:

IndexIgnore *

然后,用户可以访问该文件夹但看不到任何内容。

或者,添加名为index.html的文件,但将其留空(或包含“您可能无法查看此页面”消息)