我正在运行 Ubuntu 版本 14.04,并且设置了一个 apache2 服务器来托管存储在本地主机上的一些 php 文件/var/www/html
。
当我尝试在我的某个 php 脚本中执行以下代码时
<?php
$file = fopen("test.txt","w");
fwrite($file,"Hello World. Testing!");
fclose($file);
?>
我在 /var/www/html 中找不到名为 test.txt 的文件,在搜索后也没有在计算机上的任何地方找到。文件名不存在,我使用这个是sudo nautilus
因为我没有编辑 php 文件的必要权限/var/www/html
。为什么文件没有出现在我的/var/www/html
文件夹中,我该如何修复这个问题以便创建文件?
答案1
我刚刚在我的服务器上测试了你的 php 文件,它运行良好。
您的问题肯定是用户www-data
没有该文件夹的写权限。
如果该用户确实没有该文件夹的写权限,那么您将在文件中看到错误消息/var/log/apache2/error.log
为了查看最后的错误,请执行
tail -n 15 /var/log/apache2/error.log
例如,如果我将“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
上面明确指出了拒绝许可。
您可以通过授予用户对该文件夹的写入权限来解决此问题www-data
。