【问题标题】:file_put_contents doesnt work on DigitalOceanfile_put_contents 在 DigitalOcean 上不起作用
【发布时间】:2017-12-03 00:30:50
【问题描述】:

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

【问题讨论】:

  • 您应该更改目录的文件644775的权限

标签: php digital-ocean


【解决方案1】:

您的网络服务器需要对该文件具有写入权限。任何 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 写入权限通常在安全方面是一个坏主意。

【讨论】:

    猜你喜欢
    • 2012-08-26
    • 2017-10-20
    • 1970-01-01
    • 2016-11-28
    • 2011-06-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多