Как запустить Perl-скрипт на локальном хосте?

Я уже установил Apache. Я использую PHP для своих сценариев на локальном хосте. Нужно знать, как запустить Perl-скрипт. Я установил sudo aptitude install libapache2-mod-perl2. Я создал каталог с именем cgi-bin в моем каталоге /var/www/cgi-bin внутри этой папки. Я сохранил свой perl-скрипт perl_1.pl. Разрешения каталога даны. Что еще мне нужно сделать, чтобы запустить скрипт???? я просто набрал http://localhost/cgi-bin/ и получил ошибку 403 У вас нет разрешения для доступа к /cgi-bin/ на этом сервере. пожалуйста помоги!!

Спасибо


person Rahul    schedule 18.01.2012    source источник
comment
Я проверил свои журналы ошибок apache и обнаружил, что он использует другой путь к файлу /usr/lib/cgi-bin/perl_1.pl (т. е. местоположение Ubuntu по умолчанию для скриптов cgi), затем я изменил местоположение файла с /var/ www/cgi-bin/perl_1.pl в это место, скрипт работает нормально... но как изменить этот каталог или как я могу добавить ExecCgi в созданный мной каталог????   -  person Rahul    schedule 19.01.2012


Ответы (3)


вы не можете прочитать содержимое cgi-bin. Вы должны обратиться непосредственно к одному из скриптов в нем, в данном случае: http://localhost/cgi-bin/perl_1.pl

Кроме того, убедитесь, что ваш каталог cgi-bin/ действительно рассматривается как таковой в httpd.conf.

О, и если вы потом наткнетесь на 500: убедитесь, что ваш perl-скрипт печатает корректный HTTP-заголовок. Этого легко добиться:

use CGI qw(:standard);
print header();

И, как указал Pwex: убедитесь, что в вашем скрипте установлен исполняемый бит.

chmod 755 perl_1.pl

... должно работать в большинстве случаев

Кроме того, для дальнейшего использования стоит упомянуть mod_perl, так как это естественный следующий шаг после изучения основ cgi + perl + apache. Подробное описание этого выходит за рамки этого ответа, но я подумал, что упомяну об этом, чтобы вы знали, куда идти дальше, когда у вас есть основы, а также вы увидели ограничения cgi.

person Jarmund    schedule 18.01.2012
comment
Также убедитесь, что права доступа к файлу в порядке. Разрешение eXecute должно быть установлено для пользователя веб-сервера (например, chmod u+x perl_1.pl). - person pwes; 18.01.2012
comment
Спасибо за ответ. Я попытался, напрямую выполнив файл. Но потом пишет 404: Запрошенный URL /cgi-bin/perl_1.pl не найден на этом сервере. И я не очень разбираюсь в конфигурациях, пожалуйста, дайте мне знать немного подробностей или шагов. Спасибо - person Rahul; 18.01.2012

Как настроен ваш Apache? Вы убедились, что говорите Apache выполнять сценарий CGI в каталоге cgi-bin?

Что-то типа:

ScriptAlias /cgi-bin/ "/var/www/website/cgi-bin/"
<Directory "/var/www/website/cgi-bin/">
                Options ExecCGI -MultiViews +SymLinksIfOwnerMatch

                ...
</Directory>
person Ricky Levi    schedule 18.08.2012

Если вы не привязаны к apache или можете запускать эти сценарии на другом порту, вы можете использовать цепочку инструментов Plack/PSGI, в которой есть решения для запуска старых сценариев CGI в качестве приложений PSGI. См. раздел Запуск сценариев CGI на Plack несколько способов сделать это.

person ruz    schedule 18.01.2012
comment
Я новичок в Perl, просто пишу свои тестовые сценарии. И я не могу получить o/p в браузере, хотя я могу выполнить его из редактора падре. Спасибо - person Rahul; 18.01.2012