SuExec: “comando não no docroot” Mesmo que seja?

2
  • Arch Linux 2011.08.19 (Linux 3.4.2 i686)
  • Apache 2.2.22 com SuExec
  • PHP 5.4.4 (cli) via FastCGI

Meus sites estavam todos funcionando bem antes ... Não sei quando aconteceu porque notei isso uma semana depois (imagino que talvez depois de uma atualização do sistema), mas todos os meus VirtualHosts ficaram offline com o temido "Premature". fim do cabeçalho do script: php-fcgid-wrapper ”500 erro.

Os registros do SuExec me deram isso para cada site:

[2012-07-16 00:45:02]: uid: (1001/site) gid: (1001/site) cmd: php-fcgid-wrapper
[2012-07-16 00:45:02]: command not in docroot (/var/www/site/fcgi-bin/php-fcgid-wrapper)

Isso não é (ou pelo menos não deveria ser) verdadeiro ... Eu compilarão automaticamente o Apache com --with-suexec-docroot=/srv/www set. Ainda assim, eu tentei uma verificação de sanidade, para ver que docroot SuExec realmente achava que tinha:

$ suexec -V
suexec policy violation: see suexec log for more details

Para o qual os registros foram reivindicados:

[2012-07-16 01:07:52]: too few arguments

Tentei com sudo também; mesma coisa. Então, mesmo isso não faz sentido, e me impede de ser capaz de diagnosticar o problema corretamente.

Outra coisa que eu tentei foi mover tudo de /srv/www para /var/www , o docroot padrão, para ver se ele havia sido revertido para a versão de repositório bruta durante a atualização. Atualizei meus VirtealHosts, reiniciei o Apache, mas ainda recebi os mesmos 500 erros.

O que mais poderia estar causando isso?

    
por Hugh Guiney 16.07.2012 / 07:16

4 respostas

0

Você precisa recompilar suexec.c --with-suexec-docroot = / srv / www

    
por 16.07.2012 / 09:10
2

Você não precisa recompilá-lo. Você pode usar este pacote para definir um caminho personalizado no debian ou ubuntu:

apt-get install apache2-suexec-custom

Depois de instalar o pacote, existe um diretório especial, onde você pode definir o caminho suexec para cada usuário. Deve haver um arquivo de exemplo para o usuário www-data:

/etc/apache/suexec/<some-user-name>

Se você não tem Debian ou Ubuntu, você tem que procurar por um pacote ou recompilar o suexec com o docroot correto (veja suexec doc ). O param é:

--with-suexec-docroot=DIR

Você precisa verificar como fazer isso na sua distro.

    
por 07.07.2013 / 01:32
1

Encontre as configurações do fcgid com este comando:

/usr/lib/apache2/suexec -V

-D AP_DOC_ROOT="/var/www"
-D AP_GID_MIN=100
-D AP_HTTPD_USER="www-data"
-D AP_LOG_EXEC="/var/log/apache2/suexec.log"
-D AP_SAFE_PATH="/usr/local/bin:/usr/bin:/bin"
-D AP_UID_MIN=100
-D AP_USERDIR_SUFFIX="public_html"

O wrapper deve ser escrito na árvore de diretórios de: AP_DOC_ROOT para ser acessado e executado.

    
por 08.05.2013 / 19:52
0

Existe um arquivo de dados www (/ etc / apache2 / suexec / www-data) com 2 linhas:

/var/www
/public/cgi-bin/

você pode mudar as linhas para o que você preferir

    
por 26.09.2013 / 09:37