Почему мой Perl CGI-скрипт вызывает внутреннюю ошибку сервера на Apache?
Я установил apache2
на Ubuntu 11.04, и localhost работает. Я создал простой скрипт printenv.pl и поместил его в следующий каталог
$ mv printenv.pl /usr/lib/cgi-bin/
$ chmod +rx /usr/lib/cgi-bin/printenv.pl
Однако, когда я захожу на http://127.0.0.1/cgi-bin/printenv.pl, я получаю 500 Внутренняя ошибка сервера
Я проверил журнал ошибок на /var/log/apache2
и вот что он говорит:
[Mon Oct 24 11:04:25 2011] [error] (13)Permission denied: exec of '/usr/lib/cgi-bin/printenv.pl' failed
[Mon Oct 24 11:04:25 2011] [error] [client 127.0.0.1] Premature end of script headers: printenv.pl
Любые предложения о том, как я могу это исправить и запустить CGI-скрипты на моем локальном хосте?
2 ответа
У меня была эта точная проблема (с точно такими же путями, каталогами, разрешениями и т. Д.) Совсем недавно, и вдруг я понял, что я прочитал где-то в документации по Apach2 около недели назад.
Вот и все - все, что вы до сих пор настроили, в порядке, но по соображениям безопасности apache не будет запускать ни один файл (CGI, Perl, C и т. Д.), Пока его разрешение на запись (w) не будет полностью удалено.
Сделайте разрешения похожими на это: -r-xr-xr-x
Тогда это должно работать просто отлично. Надеюсь, это поможет, дайте мне знать, если это все еще не работает.
У меня тоже была эта проблема. Оказалось, что я установил .pl
права доступа к файлам 775
, Apache не позволяет пользователю писать. Попробуйте изменить свой .pl
права доступа к файлу 755
,
Если это не так, проверьте настройки разрешений вашего веб-сайта в /etc/apache2/sites-available
,