file_put_contents不适用于DigitalOcean

时间:2017-12-03 00:30:50

标签: php digital-ocean

每次我在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。

1 个答案:

答案 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写权限通常是安全方面的一个坏主意。