Какие должны быть права на CGI-скрипты
Права на файл скрипта и на директорию cgi-bin должны быть 0755 (rwx r-x r-x)
Владельцем должен быть владелец www-домена
Директория cgi-bin находится в папке www-домена (www/ваш.домен/cgi-bin).
Наиболее частая ошибка начинающих состоит в том, что, что они ставят права 777, тем самым разрешается запись в директорию кому угодно, система безопасности suexec не позволит запустить такой скрипт и web-сервер будет выдавать ошибку 500. Равно как неправильный владелец файла приведет к невозможности запуска скрипта.
Пример простейшего cgi-скрипта:
#!/usr/bin/perl print "Content-type: text/html\n\n"; print "Hello world!";
Также частая проблема бывает в том, что файл в формате окончаний строк dos, а не unix, пример не работы такого скрипта выявляется при запуске из консоли:
# ./hello.cgi ./hello.cgi: Команда не найдена.
Однако если выполнить
# perl hello.cgi Content-type: text/html
Hello world!
То видно, что скрипт прекрасно выполняется. В редакторе mc (mcedit) или vi сказать можно увидеть, что первая строка выглядит как
#!/usr/bin/perl^M
Дело в том, что формат окончаний строк текстовых файлов в unix и в dos (windows) различны, следует сохранить этот файл в формате unix, например открыв в vim и подав команду
:set fileformat=unix :wq
Если у вас много файлов, то можно воспользоваться командой на perl, чтобы перекодировать все файлы с расширением .cgi в текущей директории в формат unix-end-of-line, выполните
# perl -pi -e 's/\r\n/\n/;' *.cgi