无法通过 /var/www/ 内的 project.php 运行 test.sh 文件

无法通过 /var/www/ 内的 project.php 运行 test.sh 文件

测试文件的路径是 /var/www/proj/test.sh,并且项目.php在 /var/www/ 里面,我的 test.sh 使用并创建了一些 .txt 文件。

当我通过终端执行 test.sh 时,它工作正常,但是当我运行项目.php经过

http://localhost/project.php

失败了,txt文件的权限也改变了,所以我不得不手动更改txt文件的权限,甚至再次通过终端运行。

错误:

rm: remove write-protected regular empty file `/var/www/project/result/List.txt'?  
project/test.sh: line 8: /var/www/project/result/List.txt: Permission denied

那么,我如何才能永久授予 /var/www/* 的写权限

答案1

要授予写入权限,/var/www您需要授予运行 Web 服务器的用户写入权限。例如,在 Ubuntu 上,通常可以使用以下方法完成此操作:

chown www-data /var/www
chmod u+w /var/www

(将www-data运行 Web 服务器的用户设置为 的所有者,/var/www并授予目录所有者对该目录的写访问权限(如果他还没有访问权限的话)。)根据您服务器的配置,在某些情况下,这可能不起作用(例如,被 SELinux 或 AppArmor 策略阻止)。

然而,出于安全原因,不建议这样做。在最坏的情况下(假设 Web 服务器上运行的某个脚本中存在错误),外部攻击者可能会向其中写入任意数据/var/www,要么将任何内容放到您的 Web 服务器上,要么将他可以执行的脚本放到其中……

根据您的应用程序,您可以授予 Web 服务器对另一个(专用)目录的访问权限,并在 PHP 脚本中需要文件时从该目录检索文件。

相关内容