Я не уверен почему, но когда я пытаюсь запустить службу 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
Поэтому я удалил файл subsys для httpd и попробовал снова, но снова ничего не вышло.
Мой процесс добавления 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, но это было связано с jail/chroot.