服務 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的subsys檔刪除了,再試一次,還是失敗了。

我添加 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 時代也遇到類似的問題,但那與監獄/chroot 有關。

相關內容