4 votes

SuExec : "command not in docroot" alors qu'elle l'est ?

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

Mes sites fonctionnaient tous bien auparavant Je ne suis pas sûr de la date à laquelle cela s'est produit car je l'ai remarqué plus d'une semaine plus tard (peut-être après une mise à jour du système), mais tous mes VirtualHosts se sont éteints avec la redoutable erreur 500 "Premature end of script headers : php-fcgid-wrapper".

Les journaux de SuExec m'ont donné ceci pour chaque 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)

Ce n'est pas (ou du moins ne devrait pas être) vrai Je compiler automatiquement Apache con --with-suexec-docroot=/srv/www set. J'ai tout de même tenté un contrôle de bon sens, pour voir quel docroot SuExec pensait avoir :

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

Pour laquelle les journaux ont réclamé :

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

J'ai essayé avec sudo également ; même chose. Donc, même cela n'a aucun sens, et m'empêche de pouvoir diagnostiquer le problème correctement.

J'ai aussi essayé de déplacer tout ce qui se trouve dans /srv/www a /var/www le docroot par défaut, pour voir s'il n'était pas revenu à la version brute du dépôt pendant la mise à jour. J'ai mis à jour mon VirtealHosts, redémarré Apache, mais j'ai toujours les mêmes erreurs 500.

Qu'est-ce qui pourrait causer ce problème ?

2voto

Fa11enAngel Points 293

Vous n'avez pas besoin de le recompiler. Vous pouvez utiliser ce paquet pour définir un chemin personnalisé sur debian ou ubuntu :

apt-get install apache2-suexec-custom

Après l'installation du paquet, il y a un répertoire spécial, où vous pouvez définir le chemin suexec pour chaque utilisateur. Il devrait y avoir un exemple de fichier pour l'utilisateur www-data :

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

Si vous n'avez pas Debian ou Ubuntu, vous devez chercher un tel paquet ou recompiler suexec avec le bon docroot (voir doc suexec ). Le paramètre est :

--with-suexec-docroot=DIR

Vous devez vérifier, comment le faire pour votre distro.

1voto

Pol Hallen Points 1016

Il y a un fichier www-data (/etc/apache2/suexec/www-data) avec 2 lignes :

/var/www
/public/cgi-bin/

vous pouvez changer ces lignes pour ce que vous préférez

1voto

user172967 Points 21

Trouvez les configurations fcgid avec cette commande :

/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"

Le wrapper doit être écrit dans l'arborescence du répertoire de : AP_DOC_ROOT pour être accessible et exécuté.

0voto

Andrew Smith Points 1113

Vous devez recompiler suexec.c --with-suexec-docroot=/srv/www

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X