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

发布于 2024-10-26 04:42:22 字数 253 浏览 4 评论 0原文

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

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

我的问题是,现在我启用了此保护,我确实收到了电子邮件,但没有附件。我只有在没有 htpasswd 保护的情况下才会收到附件。

知道我能做什么吗?

I've got a folder named 'templates' which is CHMOD 777 and protected by a htpasswd. This means I can still use my PHP upload script to upload files into that folder and people from outside cannot access these files.

I also got a script which uses the phpmailer class. This script sends e-mails and attaches a file which is located in that protected folder.

My problem is that now that I got this protection enabled, I do receive the email but without attachment. I only receive the attachment once there is no htpasswd protection.

Any idea's what I could do?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

深爱不及久伴 2024-11-02 04:42:22

PHP 在网络服务器的 htpasswd 保护范围之外运行 - 一旦脚本运行,它就可以自由控制文件系统(至少是网络服务器的 userid/groupid 可以触及的内容)。除非您以 URL 的形式提供要附加的文件的路径,否则对该文件的任何操作都将通过正常的文件系统操作,而不是通过网络服务器,因此 htpasswd 保护不会进入其中。

如果未附加文件,我会检查脚本并查看您是否提供了文件的适当路径,以及网络服务器的用户 ID 是否具有该文件的读取权限。

PHP operates outside of the bounds of the webserver's htpasswd protection - once the script's running, it has free reign over the file system (at least, the stuff that the webserver's userid/groupid can touch). Unless you're providing the path to the file-to-be-attached as a URL, any operations on that file will go through the normal filesystem operations, and not via the webserver, so htpasswd protection does not enter into the picture.

If the file's not being attached, I'd check the script and see if you're providing the appropriate path to the file, and if the webserver's userid has read permissions on the file.

滥情稳全场 2024-11-02 04:42:22

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

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

不是作为 URL

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

确认脚本可以访问该文件

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

Make sure your script is accessing attachment files as paths on the file system, like

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

Not as URLs

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

Confirm that the script can access the file

<?php
if(!is_readable($file)) {
   $user = get_current_user();
   echo 'Error: '.$user.' cannot access '.$file;
   exit();
}
?>
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文