无法在 /var/www/html 中创建文件

Joh*_*Lee 1 server php permissions apache2

我正在运行 Ubuntu 14.04 版,并且我有一个 apache2 服务器设置为在本地主机上托管一些存储在/var/www/html.

当我尝试在我的 php 脚本之一中执行以下代码时

<?php
$file = fopen("test.txt","w");
fwrite($file,"Hello World. Testing!");
fclose($file);
?>
Run Code Online (Sandbox Code Playgroud)

搜索后,我没有在我的 /var/www/html 或我计算机上的任何位置找到名为 test.txt 的文件。文件名不存在,我正在使用,sudo nautilus因为我没有必要的权限来编辑 .php 文件中的 php 文件/var/www/html。为什么文件没有出现在我的/var/www/html文件夹中,我该如何解决这个问题以便创建文件?

hyt*_*omo 5

我刚刚在我的服务器中测试了你的 php 文件,它工作得很好。

您的问题一定是用户www-data没有对该文件夹的写权限。

如果该用户确实没有对该文件夹的写权限,那么您将在文件中看到错误消息 /var/log/apache2/error.log

为了查看最后的错误,请执行

tail -n 15 /var/log/apache2/error.log
Run Code Online (Sandbox Code Playgroud)

例如,如果我不是“test.txt”,而是输入“/test.txt”(写入/,只有root可以),我会在日志文件中收到此错误:

[:error] [pid 7505] [client 127.0.0.1:47066] PHP Warning:  fopen(/test.txt): failed to open stream: Permission denied in /var/www/html/a.php on line 2
Run Code Online (Sandbox Code Playgroud)

上面明确指出拒绝许可。

您可以通过为 user 授予对该文件夹的写权限来解决此问题www-data

使用 +w 表示法授予特定用户写入文件夹的权限