Столкнулся с такой штукой. Счетчик обращений на perl раболтает, закидываю его же в /cgi-bin/ с расширением cgi работать не хотит, пишет 500 Internal Server Error. Я уже все рекомендации посмотрел по этой ошибке и ни фига.
А вот листинг counter.cgi:#!/usr/bin/perl
$number_of_digits = "5";
$end = ".gif";
$pathtocounter = "counter.txt";
$pathtoimages = "http://localhost/icons/"; $graphics = "yes";
#=============================================================
print ("Content-Type: text/html\n\n");
open (COUNTER, "$pathtocounter");
$count = <COUNTER>;
chop ($count) if $count =~ /\n$/;
close (COUNTER);$count += 1;
open (COUNTER, ">$pathtocounter");
print COUNTER ("$count");
close (COUNTER);@digits = split(//, $count);
if ($number_of_digits eq "") {
$howmany = @digits;
} else {
$howmany = $number_of_digits;
}$spline = '%0' . $howmany . 'd';
$count = sprintf("$spline", $count);@digitimages = split(//, $count);
foreach $digitimage (@digitimages) {
if ($graphics eq yes) {
$image = "<img src=$pathtoimages"."$digitimage"."$end width=15 height=20>";
print ("$image");
} else {
$plain = $digitimage;
print ("$plain");
}
}exit;
А что в серваковском error_log?
Скорее всего у тебя в настройках сервера не раскомментирована строка,
разрешающая исполнение cgi.
У меня была такая проблема, я её решил чисто настройкой сервера.
Кстати при исполнении скрипта у тебя пристуствует строка:(offline mode: enter name=value pairs on standart input)?
>А что в серваковском error_log?
>Скорее всего у тебя в настройках сервера не раскомментирована строка,
>разрешающая исполнение cgi.
>У меня была такая проблема, я её решил чисто настройкой сервера.
>Кстати при исполнении скрипта у тебя пристуствует строка:
>
>(offline mode: enter name=value pairs on standart input)?В логах то он пишет: No such file or directory.
А в настройках все в норме вроде:
ScriptAlias, AddHandler, Directory /var/www/cgi-bin прописаны, а больше по моему ничего не надо.
Строчки (offline mode: enter name=value pairs on standart input)? нет.
А после #!/usr/bin/perl точно 0x0D символа возврата каретки нет ? Попробуй "#!/usr/bin/perl --" или "#!/usr/bin/perl -w"
>А после #!/usr/bin/perl точно 0x0D символа возврата каретки нет ? Попробуй "#!/usr/bin/perl
>--" или "#!/usr/bin/perl -w"Нет все нормально тут. Попробывал оба. Он вообще файлы на perl запускать не хочет. А вот закидываешь какой-нибудь другой, например на C, выполняет без ошибок. Может интерпретатор не работает в cgi?
А у тебя ЭТОТ юзер перла-то видит ? Среду проверяй. Чудес не бывает.
>А у тебя ЭТОТ юзер перла-то видит ? Среду проверяй. Чудес не
>бывает.
То что лежит в каталоге /perl/ юзер запускает, значит видит, а вот в /cgi-bin/ запускает все акромя перла, видимо не видит. Что делать, чтоб увидел?
Вообще то юзер тот же, а выходит что права доступа разные. Но то, что он перла не видит больше похоже на правду, как же исправить?
А на /cgi-bin/ в смысле /.../cgi-bin права у этого юзера есть ? Исполнение и просмотр - по любому должны быть. По-моему так, если не напутал чего. Это раз, и сам модуль name.cgi должен быть исполнимым.
Для каталога в *nix исполнение и просмотр одно и тоже, ессно. Эт я перемудрил.
>Для каталога в *nix исполнение и просмотр одно и тоже, ессно. Эт
>я перемудрил.
Там все нормально: drwxr-xr-x root root /cgi-bin.
И файлики *.cgi такие же. Если было бы все так плохо он бы остальные файлы не исполнял. А он работает со всем, что не написано на перлу. Вот такие траблы.
а есть в конфигах апача такая строка:
AddHandler cgi-script .cgi .pl ...?
pl там есть?
>а есть в конфигах апача такая строка:
>AddHandler cgi-script .cgi .pl ...?
>pl там есть?
Есть!!!
>>а есть в конфигах апача такая строка:
>>AddHandler cgi-script .cgi .pl ...?
>>pl там есть?
Ошибка та же
слушай, не знаешь такой простой программерский метод - берешь скрипт из него все вырезаешь после content-type, потом запускаешь если не проходит, то ошибка в настройках каталога||скрипта||\r\n||rwx если все работает, то вставляй частями код, или смотри errors
>слушай, не знаешь такой простой программерский метод - берешь скрипт из него
>все вырезаешь после content-type, потом запускаешь если не проходит, то ошибка
>в настройках каталога||скрипта||\r\n||rwx если все работает, то вставляй частями код, или
>смотри errorsЯ уже писал, скрипт рабочий, это 100%, он в cgi-bin не запускается!
Да, скрипт 100% рабочий!
По всем симптомам - некорректно прописан путь до perl.
Как проверить? Просто в shell: ./counter.cgi
>Да, скрипт 100% рабочий!
>По всем симптомам - некорректно прописан путь до perl.
>Как проверить? Просто в shell: ./counter.cgi
У меня прописано в файле #!/usr/bin/perl(это правильный путь, проверено), а из shell он конечно не выполняет.