Я пытаюсь снова запустить старый 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>