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