我有一个名为'templates'的文件夹,它是CHMOD 777并受htpasswd保护。这意味着我仍然可以使用我的PHP上传脚本将文件上传到该文件夹,而外部人员无法访问这些文件。
我还有一个使用phpmailer类的脚本。此脚本发送电子邮件并附加位于该受保护文件夹中的文件。
我的问题是,现在我启用了此保护功能,但我确实收到了电子邮件但没有附件。一旦没有htpasswd保护,我只收到附件。
任何想法都是我能做的?
答案 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();
}
?>