Por que o mod_fastcgi no Apache reclama que não tem permissão para criar um servidor?

3

Este é um problema FastCGI muito antigo, mas nunca encontrei uma resposta satisfatória.

Pesquisando a frase "(13) a permissão negada fastcgi não pode criar servidor" no Google mostrará que há muitas pessoas passando por esse problema por um longo tempo .

Algumas pessoas culpam o selinux e sugerem desativá-lo (solução não aceitável).

Outras pessoas acham que é um problema estranho de permissões de links simbólicos e sugerem transformar o diretório de logs do Apache de symlink em um diretório simples. (não aceitável, já que envolve mover os arquivos de logs) Consulte Instalando o FastCGI .

Abaixo está o erro temido normalmente registrado pelo 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]

Esperando que serverfault possa finalmente fornecer uma resposta definitiva para este problema desconcertante e irritante que tem atormentado os usuários do FastCGI por anos.

Eu me sinto desconfortável implementando as "curas" sugeridas quando ninguém realmente sabe a causa subjacente desta doença. Espero chegar ao fundo deste mistério.

    
por GeneQ 14.06.2009 / 23:30

4 respostas

2

De /usr/lib/errno.h

#define EACCES          13      /* Permission denied */

mod_fcgi se comunica com os filhos do fastCGI por meio de um canal nomeado . O Apache cria o pipe antes de gerar os filhos. Eu acho que o apache não tem permissão para criar

/var/rt3/bin/mason_handler.fcgi

Para verificar esta tentativa

su - apache "touch /var/rt3/bin/mason_handler.fcgi"

Se isso falhar, ajuste as permissões do sistema de arquivos adequadamente para dar permissão ao apache para criar um arquivo nesse diretório.

    
por 15.06.2009 / 05:44
3

Corrigi este problema por

chown apache:apache /etc/httpd/logs/
    
por 23.11.2010 / 16:29
1

Para trabalhar com o SELinux, tente usar mod_fcgid em vez de mod_fastcgi. Eu tentei o mod_fastcgi com o SELinux no CentOS 5.6 por três horas, pesquisei e não cheguei a lugar nenhum. É um problema com o mod_fastcgi tentando criar o pipe / socket para se comunicar com os aplicativos fastcgi. Eu tentei todas as permissões / contexto SELinux eu poderia pensar na pasta / var / log / httpd / fastcgi (onde mod_fastcgi cria o pipe nomeado), mas nada funcionou. Então mudei para mod_fcgid (baixei EL5 rpm de rpm.pbone.net), que aparentemente não usa o mesmo método de comunicação para falar com os aplicativos fastcgi, e tudo funcionou perfeitamente, como se o aplicativo fastcgi fosse um aplicativo cgi regular ! Você ainda tem que definir os contextos SELinux corretos em seus arquivos (veja man page para httpd_selinux). Por exemplo. você quer fazer chcon -t httpd_sys_script_exec_t fcgiapp e também chcon -t httpd_sys_script_r [w | o | a] _t em qualquer arquivo que seu script acessa / modifica, e você pode ter que configurar alguns dos allow_httpd ... booleans com o comando setsebool . E, claro, você também precisa definir as permissões de arquivo normais corretamente. Existem tutoriais da web que passam pela configuração típica do mod_fcgi.

    
por 17.06.2011 / 03:41
0

O usuário que o processo fastcgi está executando como não tem permissões para vincular a qualquer soquete para o qual você está solicitando a associação. Pode haver várias razões para isso, não há informações suficientes para fazer um diagnóstico útil.

    
por 15.06.2009 / 00:01