每次我在DigitalOcean的LAMP服务器上的PHP脚本中使用file_put_contents
时,都会收到以下错误消息:
file_put_contents(test_digitalocean.json): failed to open stream:
Permission denied in /var/www/html/test_digitalocean.php
如何正确设置权限?
我通过在浏览器中输入服务器的IP地址,然后输入/test_digitalocean.php
来访问我的脚本。
所有脚本都上传到/var/www/html/
如果我从FileZilla查看www文件夹,我可以看到权限是775,所有者和组都是www-data。
答案 0 :(得分:4)
您的网络服务器需要具有该文件的写入权限。任何Linux系统上的Apache都作为特定用户运行。您可以通过将此脚本放在服务器上并访问它来找出哪个用户:
<?php
passthru("whoami");
在Debian / Ubuntu上,此用户 www-data 。因此,您要编写的目录或文件需要具有授予该组的写权限。这些命令可能很有用,但需要root或sudo权限:
sudo chgrp www-data /path/to/file.json
sudo chmod 664 /path/to/file.json
或者,如果您要授予可以上传许多文件的目录的写访问权限,请尝试以下操作:
sudo chgrp www-data /path/to/directory
sudo chmod 775 /path/to/directory
如果你能提供帮助,我不会在你的/ var / www / html目录上运行该命令。在您的Web根目录中授予apache写权限通常是安全方面的一个坏主意。