Раньше все мои сайты работали нормально ... Я не уверен, когда это произошло, потому что я заметил это через неделю (я предполагаю, что, возможно, после обновления системы), но все мои VirtualHosts отключились со страшным «Преждевременным завершением скрипта» заголовки: php-fcgid-wrapper »ошибка 500.
Журналы SuExec дали мне это для каждого сайта:
[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)
Это неправда (или, по крайней мере, не должно быть) ... Я автоматически компилировать Apache с участием --with-suexec-docroot=/srv/www
устанавливать. Тем не менее, я попробовал проверить работоспособность, чтобы узнать, что на самом деле думает SuExec от корневого каталога:
$ suexec -V
suexec policy violation: see suexec log for more details
По которым в журналах заявлены:
[2012-07-16 01:07:52]: too few arguments
Пробовал и с sudo; то же самое. Так что даже это не имеет смысла и мешает мне правильно диагностировать проблему.
Еще я попробовал переместить все из /srv/www
к /var/www
docroot по умолчанию, чтобы узнать, не вернулась ли она к исходной версии репозитория во время обновления. Обновил мой VirtealHosts, перезапустил Apache, но все равно получил те же 500 ошибок.
Что еще могло быть причиной этого?
Его не нужно перекомпилировать. Вы можете использовать этот пакет, чтобы установить собственный путь в debian или ubuntu:
apt-get install apache2-suexec-custom
После установки пакета появляется специальный каталог, в котором вы можете указать путь suexec для каждого пользователя. Для пользователя www-data должен быть пример файла:
/etc/apache/suexec/<some-user-name>
Если у вас нет Debian или Ubuntu, вам нужно найти такой пакет или перекомпилировать suexec с правильным корневым каталогом (см. suexec doc). Параметр:
--with-suexec-docroot=DIR
Вы должны проверить, как это сделать для вашего дистрибутива.
Есть файл www-данных (/ etc / apache2 / suexec / www-data) с двумя строками:
/var/www
/public/cgi-bin/
вы можете изменить эти строки на то, что вам больше нравится
Найдите конфигурации fcgid с помощью этой команды:
/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"
Оболочка должна быть записана в дереве каталогов: AP_DOC_ROOT для доступа и запуска.
Вам необходимо перекомпилировать suexec.c --with-suexec-docroot = / srv / www