这是一个非常古老的 FastCGI 问题,但我从未找到满意的答案。
在谷歌上搜索“(13)permission denied fastcgi can't create server”这句话会发现有很多人长期遇到这个问题。
有些人将其归咎于 selinux 并建议将其关闭(不可接受的解决方案)。
其他人认为这是一个奇怪的符号链接权限问题,并建议将 Apache 日志目录从符号链接转换为普通目录。(不可接受,因为它涉及移动日志文件)请参阅安装 FastCGI。
以下是 Apache 通常记录的可怕错误。
[Wed Jun 14 22:09:34 2009] [notice] Apache/2.0.40> (Red Hat Linux) configured
-- resuming normal operations
[Wed Jun 14 22:09:35 2009] [crit] (13)Permission
denied: FastCGI: can't create server "/var/rt3/bin/mason_handler.fcgi": bind()
failed [/etc/httpd/logs/fastcgi/70d9a528c5892f2bf0c25e5a334bed81]
希望serverfault最终可以为这个困扰 FastCGI 用户多年的令人困惑和烦人的问题提供明确的答案。
当没有人真正知道这种疾病的根本原因时,我对实施建议的“治疗”感到不安。希望能解开这个谜团。
我已经解决了这个问题
从
/usr/lib/errno.h
mod_fcgi
通过命名管道与 fastCGI 子节点进行通信。Apache 在生成子节点之前创建管道。我猜想apache没有创建权限要检查这个尝试
如果失败,请适当调整文件系统权限,以授予 apache 在该目录中创建文件的权限。
要在 SELinux 下工作,请尝试使用 mod_fcgid 而不是 mod_fastcgi。我在 CentOS 5.6 上使用 SELinux 尝试了 mod_fastcgi 三个小时,然后四处搜索,但一无所获。这是 mod_fastcgi 尝试创建管道/套接字以与 fastcgi 应用程序通信的问题。我在 /var/log/httpd/fastcgi 文件夹(mod_fastcgi 创建命名管道的位置)上尝试了我能想到的所有权限/SELinux 上下文,但没有任何效果。然后我切换到 mod_fcgid(从 rpm.pbone.net 下载 EL5 rpm),它显然不使用相同的通信方式与 fastcgi 应用程序对话,并且一切正常,就像 fastcgi 应用程序是一个普通的 cgi 应用程序一样!您仍然需要在文件上设置正确的 SELinux 上下文(参见 httpd_selinux 的手册页)。例如 您想在脚本访问/修改的任何文件上执行 chcon -t httpd_sys_script_exec_t fcgiapp 和 chcon -t httpd_sys_script_r[w|o|a]_t ,并且您可能必须使用 setsebool 命令设置一些 allow_httpd... 布尔值. 当然,您还必须正确设置常规文件权限。有一些通过典型 mod_fcgi 配置的网络教程。
fastcgi 进程正在运行的用户没有权限绑定到您要求它绑定到的任何套接字。可能有很多原因,没有足够的信息来做出有用的诊断。