nginx file_put_contents权限被拒绝

时间:2017-06-07 13:30:02

标签: php

我有问题。 我用这个盒子' rasmus / php7dev',它有效,没问题,但问题是......

系统默认使用nginx。 当我创建一个名为' apix'的目录时。通过vagrantfile。 它会创建' apix目录'在/ usr / share / nginx / html

sudo touch /usr/share/nginx/html/index.php

在终端上运行代码。

<?php 
file_put_contents('foo.php',[]);

it does not work..
Warning: file_put_contents(foo.php): failed to open stream: Permission denied in /var/www/default/apix/index.php on line 3

解决它   sudo chmod -R 777 / usr / share / nginx / html / apix

但结果是假!!!!!

我该怎么办?

2 个答案:

答案 0 :(得分:2)

如果apix目录的权限没问题,请检查您是否尝试在apix目录中写入。例如,把整个路径 - file_put_contents('/ usr / share / nginx / html / apix / foo.php',[]); 也许你只是从错误的目录写。

答案 1 :(得分:0)

如果其他人遇到这类错误,您必须确保/usr/share/nginx/html目录下的每个目录都应该使用777编辑chmod

您可以先cd/usr/share/nginx/html

执行此操作
cd /usr/share/nginx/html

然后你必须运行:

chmod 777 -R *

完成。

为了完整起见,如果你从/var/log/nginx/error.log得到以下错误(这是我的真正问题并且谷歌把我带到这里错了)那么我上面提到的命令可以帮助你。

  

2017/07/08 16:57:27 [错误] 24573#0:* 192在stderr中发送的FastCGI:&#34; PHP消息:PHP警告:file_put_contents(文件):无法打开流:权限被拒绝第106行&#34; /usr/share/nginx/html/agentwebsite/index.php从上游读取响应头时,客户端:xxxx,server:example.com,请求:&#34; POST /agentwebsite/index.php HTTP / 1.1&#34;,上游:&#34; fastcgi:// unix: /var/run/php5-fpm.sock:" ;,主持人:&#34; example.com&#34;

UPDATE:

也许我错了。但无论如何你可以遵循更好的方法:
您应该创建一个包含nginxphp用户的用户组,并将该组设置为目录的所有者,然后对这些文件执行chmod g+srwx