服务 httpd 无法启动 - fcgid 无法创建共享内存

服务 httpd 无法启动 - fcgid 无法创建共享内存

我不知道为什么,但是当我尝试启动 httpd 服务时,它却无法启动。

服务器配置:

OS: CentOS 5.10
PHP: 5.5.7
Apache: 2.2.3

以下是我如何发现发生的事情的:

$ sudo service httpd start
Starting httpd:                                            [  OK  ]
$ sudo service httpd status
httpd dead but subsys locked

因此我删除了 httpd 的子系统文件,然后再次尝试,但再次失败。

我添加fcgid的过程如下:

  1. 我从源代码构建了 mod_fcgid,并将其放入 /etc/httpd/modules 目录中。

  2. 我附加LoadModule fcgid_module modules/mod_fcgid.so到模块列表

  3. 我将其注释掉,LoadModule cgi_module modules/mod_cgi.so因为我不需要它。

  4. 我为 php 创建了一个包装脚本并将其放入 /var/www/cgi-bin:

  5. 我为 PHP 创建了一个指向包装器的处理程序。

  6. 然后我尝试启动 httpd 服务

以下是我在 /var/log/httpd/error_log 中收到的错误:

[Mon Dec 16 12:18:26 2013] [notice] SELinux policy enabled; httpd running as context user_u:system_r:httpd_t:s0
[Mon Dec 16 12:18:26 2013] [notice] suEXEC mechanism enabled (wrapper: /usr/sbin/suexec)
[Mon Dec 16 12:18:26 2013] [notice] SSL FIPS mode disabled
[Mon Dec 16 12:18:26 2013] [notice] Digest: generating secret for digest authentication ...
[Mon Dec 16 12:18:26 2013] [notice] Digest: done
[Mon Dec 16 12:18:26 2013] [emerg] (17)File exists: mod_fcgid: Can't create shared memory for size 1200712 bytes

我看到它显示“文件退出”,但我到处搜索名称中带有“fcgi”的任何额外文件,但什么也没找到。

我不确定这是否是权限问题,或者可能是 SELinux 的问题 - 或者可能是 suEXEC?

我将不胜感激任何指导,因为我甚至不知道从哪里开始搜索。


我再次尝试,这次的错误稍有不同:

[Mon Dec 16 12:50:23 2013] [emerg] (13)Permission denied: mod_fcgid: Can't create shared memory for size 1200712 bytes

我不确定需要更改哪个文件夹或文件的所有权。


我将 SELinux 设置为permissive,它允许进程顺利启动 - 但我不想让 SELinux 保持原样。我会问另一个问题,如何允许 Apache、fcgid 和 PHP 在 SELinux 下协同工作。

答案1

仅测试SELinux部分,尝试禁用它并查看是否是导致问题的原因:

[alexus@XXXXXXXXXX ~]$ getenforce 
Enforcing
[alexus@XXXXXXXXXX ~]$ sudo setenforce 0
[alexus@XXXXXXXXXX ~]$ getenforce 
Permissive
[alexus@XXXXXXXXXX ~]$ 

另外,您是否正在以 chroot 方式运行它?我在 FreeBSD 时代也遇到过类似的问题,但那与 jail/chroot 有关。

相关内容