|
Страници по тази тема: 1 | 2 | (покажи всички)
Тема
|
работи само в конзолата
|
|
Автор |
$burov (начинаещ) |
Публикувано | 12.08.05 08:17 |
|
Здравейте,
принципно се занимавам с РНР, но сега ми се налага да ползвам едно API, написано на PERL и се сблъсквам с класическия проблем - Internal Server Error.
Това става дори при елементарен скрипт като този:
# !/usr/bin/perl
print "Content-type:text/html\n\n";
print "Hello, World";
Знам какви са условията за правилната работа на перл скриптовете:
1. Файла да се качи на сървъра в ASCII mode.
2. CHMOD 755
Какво става реално - ако съм пропуснал втората стъпка (755) error.log-a се пълни със съобщения за грешка, че файла не може да бъде стартиран. След като оправя този проблем, получавам Internal Server Error, а пък error.log-a няма нищо ново, въобще не е записало каквото и да е съобщение за грешка.
Няма значение дали скрипта е в cgi-bin или някъде другаде в web-tree, резултата е един и същ.
Ако пусна скрипта през конзолата, работи нормално. Няма синктактични грешки.
Къде е проблема?
| |
Тема
|
Re: работи само в конзолата
[re: $burov]
|
|
Автор | DudelnABeerBottle (Нерегистриран) |
Публикувано | 12.08.05 14:07 |
|
spored men, dude, zasega da opitash dve neshta - purvo da korigirash shebang line-a, da e '#!/usr/bin/perl', i vtoro - da proverish, dude, dali si na /usr/bin a ne na putkya mu lelina, dude.
| |
Тема
|
Re: работи само в конзолата
[re: DudelnABeerBottle]
|
|
Автор | DudelnABeerBottle (Нерегистриран) |
Публикувано | 12.08.05 14:10 |
|
Tva e nai-loshto che, dude, ne ti reportva che imash space char in the shebang line-a, dude, mnogo line-anyana rabota, dude. Mrazim toa feature, dude.
| |
|
Махнах интервала, но явно това не е било същинския проблем, след като Internal Server Error си стои. Пътя до PERL е правилен.
Все още в ерор лога нищо не пише за този файл.
| |
Тема
|
Re: работи само в конзолата
[re: $burov]
|
|
Автор | sas (Нерегистриран) |
Публикувано | 17.08.05 13:08 |
|
perl -ne 's/\r//g;print' < my.cgi >mynew.cgi
chmod +x mynew.cgi
vij dali mynew.cgi ti dava greshka.
| |
Тема
|
Re: работи само в конзолата
[re: $burov]
|
|
Автор |
kalchev (добряк) |
Публикувано | 19.08.05 18:05 |
|
Не става ясно за какъв сървър става дума, но предполагам, че тестваш въврху Apache под Windows. Ако е така, опитай с #!perl - ако, разбира се Perl ти е добавен в PATH. То няма как да е и иначе - на сървара ти, а и в операционната система не съществува директория /usr/bin
Между другото, ако ползваш за тестове сървъра OMNI HTTPd, този проблем не се получава, там и без shabang подкарва скриптовете, ориентира се само по разширението (.pl, .cgi ).
Успех!
| |
Тема
|
Re: работи само в конзолата
[re: $burov]
|
|
Автор | Pesho tupoto (Нерегистриран) |
Публикувано | 25.08.05 14:04 |
|
Sto ne kazesh v kakva sreda se probvash??
Apache ??,
OS: Win, BSD, Linux
httpd.conf - tuka trjabva da se konfigurira /cgi-bin/ i mod_perl sushto.
A inache skripta ti pri men raboti:))
| |
|
щом работи само в конзолата, значи проблемът е, че не си настроил пърленето да ти бачка и през апача
ако си в CGI режим и да кажем ползваш файлове с разширение .pl => добаваш в хттпд.цонф файла следните неща:
AddHandler cgi-script .pl
<Directory "директория със скриптовете">
Options ...другите опции... ExecCGI
</Directory>
| |
Тема
|
Re: работи само в конзолата
[re: $burov]
|
|
Автор | kiflito (Нерегистриран) |
Публикувано | 21.09.05 09:36 |
|
abe kolega pogledni si inicializaciata na weba
na konzola ti raboti shtoto scripta e dobre
ama contenta e vyv format "Content-type: text/html\n\n", ima interval sled 2-te to4ki a gledam che tvoia script niama
aide pishi ako stane ma niama kak da ne stane :)
Perl Mongers :)
| |
|
По въпроса с HTTP-header-а по-добре, за да си сигурен че нямаш правописни грешки ползвай:
#!/usr/bin/perl
use strict;
use CGI;
my $q = new CGI;
print( $q->header );
print( "Hello world<br/>\n" );
при мен най-често допусканите грешки са тия:
1. бъркам пътя на Perl ( щото тествам на 3 машини )
- решение: оправяш си пътя
2. скрипта ми е виндовско ASCII
( carriage return + line feed ili mai beshe obratnoto... :P )
- решение: noret.pl ( виж по-долу )
USAGE: noret.pl <filename>
--- FILE BEGIN
#!/usr/bin/perl
my $fileName = $ARGV[ 0 ];
print( "Removing ENTERs from '$fileName'... " );
open( F, $fileName );
$file = join( "", <F> );
close( F );
$file =~ s/\r//gis;
open( F, "> $fileName" );
print( F $file );
close( F );
print( "Ok.\n" );
--- EOF
а иначе прочети това:
| |
|
Страници по тази тема: 1 | 2 | (покажи всички)
|
|
|