我是 Linux 新手,想在专用服务器上托管一个网站,我将 php 文件放在公共“www”目录中,同时将私有文件夹放在只能由服务器本身访问的文件夹中(我的意思是 php 脚本在文件夹中写入和读取文件)。我了解到 Apache 服务器在帐户“www-data”下运行,因此我将帐户设置为文件夹所有者,权限为 700,但我仍然可以在家中通过 Web 浏览器访问此文件夹,除非我删除 www-data 权限。网站访问者使用与 Web 服务器相同的帐户是否正常?如果是,我该如何正确配置权限,以便只有 PHP 脚本可以访问目录中的文件?
这是测试文件及其权限
5.39.78.24/prywatny/test.txt
-rwx------ 1 www-data www-data 4 sie 9 08:28 test.txt
此致
答案1
由于 Apache 使用 www-data 用户,因此任何可以通过 www-data 访问(并且位于 Web 根目录中)的内容都可以由使用 Web 浏览器连接到您的服务器的任何人访问。可以想象,访问您网站的访问者就是 www-data 用户。
解决您遇到的问题的最简单方法是将您仅希望 PHP 访问的文件移到 Web 根目录之外。例如,假设您的 Web 根目录是“/var/www/”,并且您想将文件放在“/data”中。将您的 PHP 脚本放在“/var/www/”目录中,然后使用绝对名称访问脚本中的文件:
<?php
// Load the contents of the file at "/data/test.txt" into the $data variable.
$data = file_get_contents("/data/test.txt");