Назад | Перейти на главную страницу

mod_fcgid, вывод Perl-скрипта идет в apache error_log

Я пытаюсь снова запустить старый Perl-скрипт после установки mod_fcgid. Мне пришлось установить mod_fcgid для нового клиента, но, похоже, он сломал некоторые из моих других скриптов cgi.

При переходе на страницу теперь ошибка 500. Я проверил журнал ошибок, и вывод сценария находится в журнале ошибок ... так что сценарий работает, но по какой-то причине он все еще передает в браузер 500 Internal Server Error ...

Заголовки HTML - это первое, что печатается ... поэтому я не совсем уверен, почему возникает эта ошибка.

Журнал ошибок:

[omitted:html output]
[Wed Dec 08 08:59:18 2010] [warn] (104)Connection reset by peer: mod_fcgid: read data from fastcgi server error.
[Wed Dec 08 08:59:18 2010] [error] [client x.x.x.x] Premature end of script headers: www_protect.cgi, referer: http://www.mywebsite.net/
[Wed Dec 08 08:59:21 2010] [notice] mod_fcgid: process /www/sites/somescript.cgi(6747) exit(communication error), terminated by calling exit(), return code: 0

fcgi.conf:


  AddHandler fcgid-script .fcgi .cgi
  #SocketPath /var/lib/apache2/fcgid/sock
  IPCConnectTimeout 45
  IPCCommTimeout 20
  OutputBufferSize 0
  MaxRequestsPerProcess 500
  IdleTimeout 3600
  ProcessLifeTime 7200
  MaxProcessCount 8
  DefaultMaxClassProcessCount 2


# Sane place to put sockets and shared memory file
SocketPath /var/run/mod_fcgid
SharememPath /var/run/mod_fcgid/fcgid_shm

Ваша конфигурация указывает Apache обслуживать все сценарии CGI под FastCGI, что невозможно. FastCGI напрямую не совместим со сценариями CGI.

Вам следует переместить директиву AddHandler в VirtualHost вашего клиента, чтобы она не применялась ко всей конфигурации, например

<VirtualHost *:80>
    ServerName clienthost.com
    ...
    AddHandler fcgid-script .fcgi .cgi
</VirtualHost>

Если сценарии вашего клиента находятся на том же VirtualHost, что и другие сценарии cgi, вы можете ограничить обработку FastCGI определенным местоположением или каталогом, например

<Location /clientarea>
    AddHandler fcgid-script .fcgi .cgi
</Location>