我正在尝试使用 curl 从运行 apache2 的机器上下载文件。我的站点(000-default)配置如下:
<VirtualHost *:80>
DocumentRoot /home/user/files/
<Directory /home/user/files/>
Options Indexes FollowSymLinks MultiViews
AllowOverride None
Order allow,deny
allow from all
</Directory>
</VirtualHost>
我从同一网络上的另一台机器执行以下操作:
curl http://my-share/sample.text -o "test.txt"
然后我得到:
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 301 100 301 0 0 4198 0 --:--:-- --:--:-- --:--:-- 4239
但如果我 cat 文件的内容包含:
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>403 Forbidden</title>
</head><body>
<h1>Forbidden</h1>
<p>You don't have permission to access /sample.textconfig
on this server.</p>
<hr>
<address>Apache/2.2.16 (Debian) Server at my-share Port 80</address>
</body></html>
我可以顺利通过 ssh 连接到 my-share debian 服务器。为什么我无法访问该文件,是防火墙问题吗?
答案1
在日志中它只显示:文件不存在:/var/www/sample.text 。那么解决方案是让 www-data 用户以某种方式访问 /home/user/files 文件夹吗? – u123 2 小时前
我读得对吗?Apache 正在从 /var/www 目录读取,而您想从 /home/user/files 提供文件?如果确实如此,您可能需要重新检查 Apache 配置。
答案2
我的猜测是你的 apache 用户(通常像 www-data)没有该文件/home/user/files/sample.text
或其中一个父目录的读取权限。
查看 apache 的错误日志可以帮助您查明所面临的问题。