| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Perl: Общие вопросы > Трудности с IndigoPerl |
| Автор: VladimirAlexeev 24.1.2009, 19:34 | ||||
| Установил IndigoPerl. Создаю файл следующего содержания
Запускаю через браузер, ничего не выводится. Беру пример
Выводиться на экран My test. Вопрос №1 Что обязетально нужно выводить шапку через CGI объект (или просто выводить еще-что, кроме нужной мне информации), чтобы увидеть хоть какой-то результат? Вопрос №2 При допущении любой ошибки в скрипте, браузер выдает Ошибку 500. При этом само диагностическое сообщение записывается в error.log апача. Так вот можно ли как сделать вывод ошибок в браузер (как в PHP)? |
| Автор: VladimirAlexeev 24.1.2009, 23:28 | ||
Но если, допустим, поставлю квадратные скобки, там где должны быть круглые, то мне В БРАУЗЕР выведется сообщение. А не в лог! И никакой ошибки 500. А тут малейшая опечатка и все! 500 и лезь в лог ( Ладно, качаю ща мануал, может просветит... |
| Автор: nitr 25.1.2009, 00:53 | ||||||
| VladimirAlexeev, вы не правы! В пхп нет обработки 500 ошибки, то что вы про скобки э то синтаксис, зачем спорить ни о чём? Вы посмотрели сылки, там же по-русски написано - Ошибка 500 это "ошибка сервера". use CGI::Carp 'fatalsToBrowser'; вам в первое время поможет. Посмотрите пример что я привел. В нём мы тоже поставили "какие-то другие скобки", а конкретнее убрали две буквы "m" и "y" Чтобы получить 500 ошибку в пхп, как вариант - найдите и удалите php.ini. Ещё можно изменить права на исполнение на скрипт.php. и придется вам тоже лезть в логи Апача. И ничего он не выведет вам, а скажет 500. P.S.: VladimirAlexeev, хватит сравнивать PHP и Perl, вы так точно не научитесь Perl'у, в принципе обратное тоже иногда закономерно ;) Прочтите пару книг, это для первого времени достаточно, да и самое главное не ленитесь понимать, а знание пхп отбросьте на время изучения. Вот пример проще:
Ошибку покажет в браузере, можно сказать синтаксическая ошибка. Такое:
Уже покажет 500. Т.к. синтаксис верный, но у вас не скрипт CGI. Если бы вы знали что это CGI, то поняли, что здесь мы не передали заголовок. Т.е. этот:
|
| Автор: tolkien 25.1.2009, 04:40 |
| И еще учтите что PHP создан спец. для веба, а PERL создан для администраторов сетей. Отсюда такое разное поведение на ошибку 500 как выше написано.Т.е в php предусмотренные разные спец обработки не предвиденных ситуаций, чтобы пользователь поличл максимально полезной информации на устранение ошибки. В PERL для этого вам надо самим что то делать. Например подключать разные модули или что-нибудь предопределять. Работы от вас в PERL требуется больше. Например чтобы производительность вашего скрипта была сравнима с php нужно обязательно использовать mod_perl или fastcgi. Т.е вам придется дополнительно изучать выше указанные модули и их интерфейсы. Кроме того не каждый хост даст еще возможность использовать mod_perl или fastcgi. В PHP ничего этого не надо. Он сделан уже так что вам ненужно заниматься самим кроме написания самой программы еще и ее оптимизацией. |
| Автор: VladimirAlexeev 25.1.2009, 11:36 | ||||||
Блин, да знаю я ошибки сервера =). Потому меня это напрягает (удивляет).
Выдает ошибку 500!
Это выдает пустую страницу. Выдает уже My test. Вот все, что касается последних 3 примеров в логе
|
| Автор: gcc 25.1.2009, 12:00 | ||
| браузер может быдавть ошибку из-за прав доступа... и еще видел из-за некоторых приколов Добавлено через 3 минуты и 28 секунд
работает? |
| Автор: nitr 25.1.2009, 12:25 |
| VladimirAlexeev, смотрите у себя, у вас проблемы. Данные примеры слишком просты, чтобы так отрабатывать, в вашем случае вы скорее всего закомментировали строку use CGI::Carp 'fatalsToBrowser';. На сколько я знаю IndigoPerl это Винда. Ставьте Perl от ActiveState и ошибок меньше, и реализация лучше (имхо). |
| Автор: VladimirAlexeev 25.1.2009, 13:59 | ||||
Третий вариант - да. Но первые два то не так, как описали )
Как в посте написали, так и вставил в скрипт и запустил.
Не понял? IndigoPerl - это Apache+PHP+Perl. Сразу все ставится вместе. По крайней мере папки ActivePerl там есть =) |
| Автор: nitr 25.1.2009, 14:59 |
| VladimirAlexeev, покажите perl -v. А затем perl -MCGI::Carp -e "use CGI::Carp 'fatalsToBrowser'; print '\';" |
| Автор: VladimirAlexeev 25.1.2009, 16:54 | ||||
|
| Автор: nitr 25.1.2009, 18:12 | ||
VladimirAlexeev, создайте скрипт
|
| Автор: VladimirAlexeev 25.1.2009, 18:14 |
| Создал, попытался запустить через браузер, получил ошибку 500. |
| Автор: gcc 25.1.2009, 18:42 | ||
nitr, мложет быть так?
|
| Автор: VladimirAlexeev 25.1.2009, 19:19 |
| gcc, не знаю это ли Вы имеете ввиду, но perl в командной строке у меня выполняется в любом месте. |
| Автор: nitr 25.1.2009, 23:34 | ||
| gcc, зачем? VladimirAlexeev, он имел ввиду как раз вариант с указанием полного пути до perl.exe. VladimirAlexeev, тогда установите "ручками" Апач, сконфигурируйте его тоже "ручками" gcc, у него нормально установлено, т.к. кое-какие скрипты нормально отрабатываются с указанием #!perl. + у него нормально отработала команда perl -MCGI::Carp -e "use CGI::Carp 'fatalsToBrowser'; print '\';". Лог показывает, что в браузере будет отображено именно:
|
| Автор: amg 26.1.2009, 09:16 | ||||
Ну конечно (бэкслеш в одинарных кавычках, если он последний в строке, нужно экранировать). Попробуйте так: perl -MCGI::Carp -e "use CGI::Carp 'fatalsToBrowser'; print '\\';" Э... Туплю. Скрипт с ошибкой -- это специально для проверки? |
| Автор: VladimirAlexeev 26.1.2009, 09:58 | ||
Похоже, что так )
Конфиг Апача я уже знаю... только как его настроить под Перл? Видимо что-то особенное надо.. ) Сейчас полезу в поиск... |
| Автор: nitr 6.2.2009, 03:07 | ||
да
всё в манах, и по ним ничего нового и особенного не надо. Я более не смог найти причин, такого "отношения" к работе скриптов |