我不知道為什麼,但是當我嘗試啟動 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 的過程如下:
我從原始碼建立了 mod_fcgid,並將其放入 /etc/httpd/modules 目錄中。
我附加
LoadModule fcgid_module modules/mod_fcgid.so
到模組列表中我評論掉了,
LoadModule cgi_module modules/mod_cgi.so
因為我不需要它。我為 php 創建了一個包裝腳本並將其放入 /var/www/cgi-bin 中:
我為 PHP 創建了一個指向包裝器的處理程序。
然後我嘗試啟動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 有關。