允许受保护目录中的PHP脚本

时间:2011-03-25 14:33:46

标签: php .htaccess attachment phpmailer .htpasswd

我有一个名为'templates'的文件夹,它是CHMOD 777并受htpasswd保护。这意味着我仍然可以使用我的PHP上传脚本将文件上传到该文件夹​​,而外部人员无法访问这些文件。

我还有一个使用phpmailer类的脚本。此脚本发送电子邮件并附加位于该受保护文件夹中的文件。

我的问题是,现在我启用了此保护功能,但我确实收到了电子邮件但没有附件。一旦没有htpasswd保护,我只收到附件。

任何想法都是我能做的?

2 个答案:

答案 0 :(得分:1)

PHP在网络服务器的htpasswd保护范围之外运行 - 一旦脚本运行,它就可以自由统治文件系统(至少是网络服务器的用户ID /组ID可以触摸的东西)。除非您提供要作为URL附加文件的路径,否则对该文件的任何操作都将通过正常的文件系统操作,而不是通过Web服务器,因此htpasswd保护不会进入图片。< / p>

如果文件没有附加,我会检查脚本,看看你是否提供了相应的文件路径,以及网络服务器的用户ID是否具有该文件的读权限。

答案 1 :(得分:1)

确保您的脚本正在访问附件文件作为文件系统上的路径,例如

/var/www/example.com/httpdocs/uploads/foo.jpg

不是网址

http://example.com/uploads/foo.jpg

确认脚本可以访问文件

<?php
if(!is_readable($file)) {
   $user = get_current_user();
   echo 'Error: '.$user.' cannot access '.$file;
   exit();
}
?>