在安装CentOS 7时,SELinux默认是启用的。 这会阻止Apache正确读取标准/ var / www / html文档根目录中的PHP文件(当显示包含PHP脚本的网页时,浏览器是空白的)。 当我禁用SELinux时,页面显示正常。
有没有设置SELinux以允许Apache从文档根访问PHP文件的方法? 我宁愿不要完全禁用SELinux,因为CentOS明确地认为这是一个理想的安全补充。
我没有做太多的SELinux,但是你可以试试
semanage fcontext -a -t httpd_sys_script_exec_t '/var/www/html(/.*)?' restorecon -R -v /var/www/html/
这允许Apache在该目录中执行PHP脚本,并在重新启动后保留。
如果你使用MySQL,你可能必须这样做。 SELinux:让Apache在CentOS上与MySQL交谈可能会有帮助
运行audit2allow < /var/log/audit/audit.log确认httpd被SELinux阻止(请参阅此链接 )。 解决scheme是使用以下步骤创build和应用策略模块:
audit2allow -a -M my_httpd运行命令audit2allow -a -M my_httpd (用任何你喜欢的名字replace“my_httpd”)。 semodule -i my_httpd.pp来安装模块。 在我遵循这些步骤之后,Apache能够毫无困难地在我的服务器上运行PHP脚本。 重新启动服务器不会破坏更改。
模块文件的内容(my_httpd.te):
module my_httpd 1.0; require { type admin_home_t; type httpd_t; class file { read getattr open }; } #============= httpd_t ============== allow httpd_t admin_home_t:file { read getattr open };