微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

php – 我无法授予写入文件的apache权限,我做错了什么?

我正在尝试向我的主文件夹中的文件授予apache权限,以便PHP页面可以将日志数据写入该文件.下面找到我在bash shell中完成的工作,我无法弄清楚为什么这不起作用:

[root@myserver logs]# mkdir apachelogs
[root@myserver logs]# touch apachelogs/log.log
[root@myserver logs]# chown -R apache:apache apachelogs
[root@myserver logs]# chown -R apache:apache apachelogs/log.log
[root@myserver logs]# chmod 770 apachelogs
[root@myserver logs]# su apache
bash-4.1$cd apachelogs
bash: cd: apachelogs: Permission denied

所以我刚刚授予apache所有权,读取,写入,执行权限,但显然apache仍然无法访问目录,这在我的PHP脚本运行这行代码时得到验证:

echo exec(whoami)."\n";
file_put_contents("/home/chilinut/logs/apachelog/log.log","test",FILE_APPEND);

输出(毫不奇怪)

apache
E_WARNING: file_put_contents(/home/chilinut/logs/apachelog/log.log): 
Failed to open stream: Permission denied

在这里错过了什么?
我不想给文件夹777.我宁愿它有类似644的东西.我使用的是CentOS版本6.4(最终版)

谢谢阅读!

解决方法:

老兄,

这是一个明显的例子,即文件/home/chilinut/logs/apachelog/log.log的父目录没有用户apache的权限.

您还必须为父目录的用户apache提供写入,读取权限.请在您的情况下尝试以下操作

chown chilinut:apache /home/chilinut/
chown -R chilinut:apache /home/chilinut/*
chmod g+rw /home/chilinut/
chmod -R g+rw /home/chilinut/*

现在切换到apache用户并尝试执行它.没事的.我尝试过使用示例脚本并执行与脚本相同的操作.

enter code# cat test.sh 
echo | exec whoami ;
echo test >> /home/testleo/public_html/apachelogs/log.log;

我的工作很好.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐