nginx php无法在CentOS机器上写入文件

nginx php无法在CentOS机器上写入文件

我有这个 PHP 代码:

<?php
$myfile = fopen("testfile.txt", "w")
?>

/usr/share/nginx/html我的目录中的权限如下

drwxrwxrwx. 3 root root  4096 Nov 20 08:51 .
drwxr-xr-x. 3 root root    17 Nov 18 23:48 ..
-rwxrwxrwx. 1 root root   537 Sep 16 14:56 50x.html
-rwxrwxrwx. 1 root root  1171 Nov 20 03:50 make.php

但是当我运行上面的 PHP 代码时,make.php它并没有创建testfile.txt

这里出了什么问题?我也尝试使用nginx命令将用户更改为chown,但是没有用。

答案1

好的,基本上我必须改成这样:

SELINUX=permissive

/etc/selinux/config文件中。更多信息请见此处:如何禁用 SELinux

我不知道这是否是最好的解决方案。

答案2

哈哈!首先……我喜欢你的用户名“ctrlz”。

关于您的问题和 SELinux:

网络上有很多人建议禁用 SELinux。这绝对是最简单的“解决方案”,但在生产环境中并不理想,因为它会使您的服务器更容易受到攻击。

昨天,我再次深入学习了 SELinux。我发现了这样一个话题:面向普通用户的 SELinux(40分钟),作者托马斯·卡梅伦很有帮助。

我不知道你使用的是什么 Linux 发行版(我也不确定 SELinux 与其他发行版之间的差异有多大),但 CentOS 提供了一个SELinux 指南




快速介绍:

SELinux “上下文”以 格式显示user:role:type:range。默认情况下,SELinux 以targeted模式运行,该模式通过属性限制对资源的访问type

您可以将标志附加到-Z诸如ps、、、、、、等命令,以查看不同资源上的lsSELinux上下文。cpmvmkdirnetstat

要查看 Web 文件夹的 SELinux 上下文,请运行:

ls -lZ /usr/share/nginx/html

要查看进程的上下文nginx,请运行:

ps -auxZ | grep -i nginx

还有一些 SELinux“布尔值”可以针对常见用例启用/禁用。要查看与 Web 服务器相关的布尔值列表(nginx在本例中),请运行:

getsebool -a | grep -i httpd

要更新布尔值,可以使用命令进行设置setsebool。例如:

setsebool httpd_read_user_content 1

其他一些有用的命令:




这就是我目前对 SELinux 的了解程度。我知道这是一篇老帖子,但我希望它能对其他人有所帮助。

相关内容