"Активиране" на perl

DownFall

Registered
Реших да започна да изучавам още един език, освен PHP. Колебаех се между perl и python, но в крайна сметка се спрях на Perl..

Първия проблем изникна още преди да съм започнал да пиша дори първия си код (Не е добър знак май :D). Създадох си файл test.pl със съдържание
#!/usr/bin/perl/
print "test";

Удрям на камък.. Заредя ли файла през браузъра започва да се Download-ва вместо да се изпълни..

Зададох в .htaccess
Options +ExecCGI
AddHandler cgi-script pl

Вече не се сваля файла, но не се и изпълнява. Бие грешка 500. Правата на файла са 755.

root@localhost:~$ whereis perl
perl: /usr/bin/perl /etc/perl /usr/lib/perl /usr/share/perl /usr/share/man/man1/perl.1.gz

Моля за помощ :) Благодаря предварително.

Edit: Извадка от error лога.

[Tue Jan 19 00:42:57 2010] [error] [client 127.0.0.1] Directory index forbidden by Options directive: /var/www/test/
[Tue Jan 19 00:42:59 2010] [error] [client 127.0.0.1] (13)Permission denied: exec of '/var/www/test/test.pl' failed
[Tue Jan 19 00:42:59 2010] [error] [client 127.0.0.1] Premature end of script headers: test.pl
 
Включи си cgi модула на apache-то и би трябвало да се изпълни в браузъра. За всеки случай си провери и пътищата в конфигурационния файл.
 
rombeca каза:
Виж си пътищата в httpd.conf.
Празен е..

radio_stun4fun каза:
Включи си cgi модула на apache-то и би трябвало да се изпълни в браузъра. За всеки случай си провери и пътищата в конфигурационния файл.
Кой точно е конфигурационния файл? :)
 
DownFall каза:
rombeca каза:
Виж си пътищата в httpd.conf.
Празен е..

radio_stun4fun каза:
Включи си cgi модула на apache-то и би трябвало да се изпълни в браузъра. За всеки случай си провери и пътищата в конфигурационния файл.
Кой точно е конфигурационния файл? :)

А ти с кой линукс си? По-добре виж 'man' на Apache , и провери в кой файл ти се запазват настройките.
В Ubuntu е
Код:
etc/apache2/conf.d
 
Освен правата ти трябва още един print със content-type иначе бие грешка пак, и трудно се схваща от къде е (пр. на nginx ми даваше bad gateway)
->

print "Content-type: text/html\n\n";

А permission denied пък също е интересно
Сложи му chmod 0777
 
rombeca каза:
DownFall каза:
rombeca каза:
Виж си пътищата в httpd.conf.
Празен е..

radio_stun4fun каза:
Включи си cgi модула на apache-то и би трябвало да се изпълни в браузъра. За всеки случай си провери и пътищата в конфигурационния файл.
Кой точно е конфигурационния файл? :)

А ти с кой линукс си? По-добре виж 'man' на Apache , и провери в кой файл ти се запазват настройките.
В Ubuntu е
Код:
etc/apache2/conf.d

Ubuntu 9.10, но в директорията не намерих нещо, което да ми подскаже къде е конфигурацията..

alex95_bg_2 каза:
Освен правата ти трябва още един print със content-type иначе бие грешка пак, и трудно се схваща от къде е (пр. на nginx ми даваше bad gateway)
->

print "Content-type: text/html\n\n";

А permission denied пък също е интересно
Сложи му chmod 0777

root@localhost:/home/user# cd
root@localhost:~# vi /var/www/test.pl
root@localhost:~# chmod 777 /var/www/test.pl
root@localhost:~# cat /var/www/test.pl
#!/usr/bin/perl/
print "Content-type: text/html\n\n";
print "test";
root@localhost:~# perl -w /var/www/test.pl
Content-type: text/html

testroot@localhost:~#

---

Access.log

127.0.0.1 - - [19/Jan/2010:19:47:41 +0200] "GET /test.pl HTTP/1.1" 500 644 "-" "Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.1.7) Gecko/20100106 Ubuntu/9.10 (karmic) Firefox/3.5.7"
127.0.0.1 - - [19/Jan/2010:19:50:23 +0200] "GET /test.pl HTTP/1.1" 500 644 "-" "Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.1.7) Gecko/20100106 Ubuntu/9.10 (karmic) Firefox/3.5.7"

---

Error.log

[Tue Jan 19 19:50:23 2010] [error] [client 127.0.0.1] (20)Not a directory: exec of '/var/www/test.pl' failed
[Tue Jan 19 19:50:23 2010] [error] [client 127.0.0.1] Premature end of script headers: test.pl

---

В браузъра: Грешка 500 :(
 
Пробвай да го сложиш в cgi-bin
На debian-базирани беше на м*йната си, май в /usr/share някъде
Виж в /etc/apache2/apache2.conf
реда е ScriptAlias, там ще пише пътя :)
 
Сложих пробно apache. На debian пътя е /usr/lib/cgi-bin/
После го отваряш от saita.com/cgi-bin/faila.pl
Така 100% ще тръгне самия файл, без да слагаш ExecCGI
Просто всичко се третира за cgi там, стига да е с 0777 права
Ако и тогава не става значи проблема е от perl скрипта
 
Освен chmod 755 трябваше и chmod +x.. В момента го изпълнявам кода, но при всяка грешка в синтаксиса бие пак грешка 500.. Не е ли като php да изписва на кой ред в кой файл е грешката? Много е неубодно така..
 
Можеш да проверяваш скриптовете за грешки с:

Код:
perl -wc scriptname.pl

За целта ти трябва интерпретираща програма като ActivePerl.
 
Хм.. Да, така я показва..

syntax error at test.pl line 9, near "$ENV{"
test.pl had compilation errors.

Пак е по-неудобно, но не е болка за умиране :)

А някакъв съвет от къде да започна самоубочнието си? :D
На пръв поглед виждам доста прилики с php.. но и доста разлики :S
 
Потърси разни материали из YouTube. После разбира се трябва да се научиш да използваш документацията... Общовзето започни от Google с ключовите думи "perl tutorials". ;)

Успехи!
 
Малко в страни от идеята, с която направих темата, искам да попитам какви са точно предимствата на perl? На няколко места в нета срещнах мнения от сорта, че php е доста по-мощен и по-функционален език за уеб програмиране, а perl e отживелица, ако мога така да се изразя.

Задам го въпроса така, защото с perl в момента съм на нулево ниво и за мен няма разлика дали ще уча него или друг език.. Въпроса е да е нещо, което ще може да е от полза, а не просто да се отбие номера.. :)
 
Виж сега. Всеки език си има предимства и недостатъци. Който и език да знаеш, няма да ти е излишен. Въпроса е ти сам да усетиш кое е най-добро за теб. Ако се ориентираш към PHP, тук във форума ще имаш база, от която ще черпиш знания.
Изборът е изцяло твой и не оставяй никой друг да ти повлияе.
 
Така е, прав си. Но има и друга гледна точка.. PHP е отделен въпрос, него съм го подхванал вече :) Просто искам да уча и втори език, но не мога да преценя точно кой.. Както сам каза, всеки си има предимства и недостатъци. Наясно съм, че избора си е само мой, аз не искам някой да ми казва какво да правя, аз търся мнение от някой по-компетентен, какво точно представлява езика, защото очевидно нямам представа..

Най-общо казано сабирам информация, на базата на която след това ще реша какво точно да правя :)
 
http://www.tizag.com/perlT/ е хубава основа :)

/офф 755 не става когато ти си собственик на файла, а www-data се опитва да го изпълни
Последната цифра е правата за изпълнение :) +x я прави на 7
Пример 757 означава ти можеш да четеш, пишеш изпълняваш, групата ти може това без да изпълнява а всички други това дето и ти можеш
 
Ако ще ползваш perl за уеб програмиране, по-добре се самоубий :) Python и PHP са по-мощни и с много по-изчистен синтаксис. Perl е write-only език :D
 

Back
Горе