|
|
|
| Всем привет.
Есть небольшая проблемма.
Установил апач2
пакеты
apache2-cgi-bin - cgi-bin for Apache
apache2-cgi-bin-printenv - cgi-bin/printenv for Apache
apache2-cgi-bin-test-cgi - cgi-bin/test-cgi for Apache
моды
cgi и perl включены
так вот test-cgi и printenv запускаются
а свой скрипт нет.
задача запустить хотябы простейший скрипт на perl | |
|
|
|
|
|
|
|
для: axe79
(07.02.2010 в 12:31)
| | Что интересно при изменении содержания test-cgi dslf`n ne ;t cfve. jib,re xnj b ghb pf vecrt vjtuj crhbgnf
Server error!
The server encountered an internal error and was unable to complete your request.
Error message:
Premature end of script headers: m
If you think this is a server error, please contact the webmaster.
Error 500
192.168.0.7
Sun Feb 7 23:07:38 2010
Apache/2.2.14 (Unix) mod_perl/2.0.4 Perl/v5.8.9 | |
|
|
|
|
|
|
|
для: axe79
(08.02.2010 в 00:08)
| | Покажи сам скрипт | |
|
|
|
|
|
|
|
для: Тень&
(08.02.2010 в 01:08)
| | #!/usr/bin/perl
use CGI;
use strict;
print header;
print "<B>Hello, World!</B>"; | |
|
|
|
|
автор: .heed (08.02.2010 в 13:32) |
|
|
для: axe79
(08.02.2010 в 10:20)
| | какая ОС ?
>#!/usr/bin/perl
/usr/bin/perl должен соответствовать
и смотрите что пишется в error.log
вместо
use CGI;
print header;
можно попробовать просто
print "content-type: text/plain\n\n" | |
|
|
|
|
|
|
|
для: .heed
(08.02.2010 в 13:32)
| | оська линь
путь к интерпритатору соответствует точно потому что test-cgi тот же самый перл
вот выволд ерор_лога
[Sun Feb 07 23:50:45 2010] [error] [client 192.168.0.7] Premature end of script headers: t
[Mon Feb 08 09:27:25 2010] [error] [client 192.168.0.7] File does not exist: /var/www/html/favicon.ico
[Mon Feb 08 09:27:28 2010] [error] [client 192.168.0.7] File does not exist: /var/www/html/favicon.ico
[Mon Feb 08 12:22:19 2010] [error] [client 192.168.0.7] String found where operator expected at /var/www/cgi-bin/t line 12, near "ptint "GOOD WORK""
[Mon Feb 08 12:22:19 2010] [error] [client 192.168.0.7] \t(Do you need to predeclare ptint?)
[Mon Feb 08 12:22:19 2010] [error] [client 192.168.0.7] syntax error at /var/www/cgi-bin/t line 12, near "ptint "GOOD WORK""
[Mon Feb 08 12:22:19 2010] [error] [client 192.168.0.7] Unmatched right curly bracket at /var/www/cgi-bin/t line 12, at end of line
[Mon Feb 08 12:22:19 2010] [error] [client 192.168.0.7] Execution of /var/www/cgi-bin/t aborted due to compilation errors.
[Mon Feb 08 12:22:19 2010] [error] [client 192.168.0.7] Premature end of script headers: t
[Mon Feb 08 14:01:10 2010] [error] [client 192.168.0.7] syntax error at /var/www/cgi-bin/m line 6, near "print"
[Mon Feb 08 14:01:10 2010] [error] [client 192.168.0.7] Execution of /var/www/cgi-bin/m aborted due to compilation errors.
[Mon Feb 08 14:01:10 2010] [error] [client 192.168.0.7] Premature end of script headers: m
[Mon Feb 08 14:01:35 2010] [error] [client 192.168.0.7] syntax error at /var/www/cgi-bin/m line 6, near "print"
[Mon Feb 08 14:01:35 2010] [error] [client 192.168.0.7] Execution of /var/www/cgi-bin/m aborted due to compilation errors.
[Mon Feb 08 14:01:35 2010] [error] [client 192.168.0.7] Premature end of script headers: m
[Mon Feb 08 14:01:37 2010] [error] [client 192.168.0.7] syntax error at /var/www/cgi-bin/m line 6, near "print"
[Mon Feb 08 14:01:37 2010] [error] [client 192.168.0.7] Execution of /var/www/cgi-bin/m aborted due to compilation errors.
[Mon Feb 08 14:01:37 2010] [error] [client 192.168.0.7] Premature end of script headers: m
скрипт
#!usr/bin/perl
print "content-type: text/plain\n\n"
не выдаёт ошибки выдаёт просто пустую страницу
наверное всё работает но я пишу не правильно
есл не тяжело подкинте простенький CGI cкрипт на несколько строк | |
|
|
|
|
|
|
|
для: axe79
(08.02.2010 в 15:08)
| | якак раз хочу запустить и настроить апача чтоб можно было нормально учить CGI
и сразу писать и проверят скрипты | |
|
|
|
|
|
|
|
для: axe79
(08.02.2010 в 10:20)
| | >моды cgi и perl включены
mod_perl в принципе не используется совсем, если скрипт запускается mod_cgi
// стормозил :) было-же написано что Unix :)
смотрите в error.log
и там с правами на cgi-bin , и на сами файлы скриптов нужно разбираться в unix
у меня под win32 строчка #!/usr/loca/perl/bin/perl.exe не нужна совсем, если скрипты интерпритирует mod_perl | |
|
|
|
|
|
|
|
для: axe79
(07.02.2010 в 12:31)
| | вывод текущей дирректории
###!/usr/bin/perl -W
#<?
print "Content-Type: text/html\n\n";
my $dir = ".";
opendir FDIR, $dir;
while(my $name = readdir FDIR)
{ #next if -d $name;
print("<a href='$name'>$name</a><br>\n");
}
closedir FDIR;
|
у меня это #!/ закомментировано
потомучто в конфиге такое
PerlModule ModPerl::ROCK
<Location /perl-status>
SetHandler modperl
PerlOptions +GlobalRequest
PerlResponseHandler Apache2::Status
</Location>
Alias /cgi-glob/ "/home/cgi-glob/"
# общая для всех виртуальных хостов
<Location "/cgi-glob/">
# AddHandler perl-script .pl
SetHandler perl-script
PerlResponseHandler ModPerl::ROCK
# PerlHandler ModPerl::Registry
PerlOptions +ParseHeaders -GlobalRequest
PerlSetupEnv On
Options ExecCGI FollowSymlinks
</Location>
| первая строчка нужна только для того чтобы показывало в /perl-status
, а ModPerl::ROCK это я просто скопировал файл apache/ModPerl/Registry.pm в файл ROCK.pm
и заменил там
chdir_file => 'chdir_filel',
на
chdir_file => 'chdir_file_normal',
потомучто рабочим каталогом для скриптов оказывается тот из которого запустили apache
, и глобально изменялся для всех скриптов при каждом chdir
// забыл сказать добавил там ещё вначале
package ModPerl::ROCK;
BEGIN { unshift @INC, '.', '/usr/local/perl/lib', '/usr/local/perl/site/lib'; }
|
// upd
и делал небрежно так всё, мне главное было просто тестить
, там возможностей многовато,нужно читать, я половину ещё и не понял
////upd
правда не знаю чем может отличаться , у меня такая строчка
Apache/2.2.11 (Win32) mod_fcgid/2.3.4 DAV/2 mod_ssl/2.2.11 OpenSSL/0.9.8i SVN/1.6.6 mod_ftp/0.9.6 PHP/5.2.11-dev mod_perl/2.0.4 Perl/v5.10.0 | |
|
|
|