Анимация
JavaScript
|
Главная Библионтека Что делать, если CGI-программа не работает Перечисленные ниже разделы можно считать кратким руководством по отладке типичной CGI-программы. Перед тем как начать разбираться, почему не работает ваша первая CGI-программа, вернитесь к пред]дущему материалу и проверьте, все ли инструкции выполнены. К концу этого занятия вы сможете локализовать любую проблему CGI-программы и исправить ее. Все диагностические сообщения, приведенные в следующих разделах, предполагают, что отлаживаемая программа называется hello.cgi. Если у программы другое имя - используйте его. А может, виновата сама программа? Первый потенциальный источник проблем - конечно же, сама CGI-программа. Нечего мудрить с настройкой конфигурации Web-сервера, если в CGI-профамме содержатся ошибки. CGI-программы можно запускать вручную, как и остальные программы на Рег]. Этот факт часто используется при отладке. Для запуска программы наберите в командной строке perl hello.cgi Интерпретатоег! ответит вам подобной строкой: (offline mode: ente value pairs on standard input) Эта строка означает, что модуль CGI пытается получить значения полей формы. Про формы мы поговорим на 18-м занятии, "Основы обработки форм". В ответ на это сообщение вы должны что-то ввести, хотя бы символ конца файла. В UNIX - это <CtrH-D>, в Windows - <Ctrl-bZ>. Затем CGl-сценарий выведет следующий текст: Content-Type: te/htnu <B>Hello, World!</B> Сообщение Content-Type: text/html означает, что следующий за ним текст должен быть интерпретирован как текст HTML. Более основательно вы поймете значение этого сообщения после изучения материала 20-го занятия, "Работа с HTML-кодом и CGI-программами". Пока лишь вам достаточно знать, что эта первая строка необходима и что ее выводит функция header. Если перед этой строкой будет выведен какой-нибудь другой текст, CGI-программа не будет работать. Ниже перечислены несколько распространенных проблем, возникающих с СС1Программами, и способы их разрешения. • Проблема. Сообщение о синтаксической ошибке. Решение. Устраните синтаксическую ошибку. • Проблема. Сообщение Cant locate га.pm in «INC Решение. Вы используете неполную установку интерпретатора Peri. Модуль CGI устанавливается вместе с Perl. Для переустановки Peri воспользуйтесь инструкциями, приведенными в приложении "Инсталляция модулей в Perl". Проблемы сервера ЕСЛИ сценарий отлажен и все его ошибки исправлены, переходите к проверке правильности настройки сервера и установки сценария. Ниже перечислены несколько распространенных проблем, связанных с Web-сервером, и способы их разрешения. • Проблема. Сообщение сервера Not found или 404 Not Found. Решение. Это сообщение свидетельствует о наличии одной из двух проблем. • Введен неправильный URL. Например, вы набрали https www.server.com/cgi/hello.cgi вместо http: www.server.com/cgi-bin/ hello.cgi. Снова вернитесь к контрольному списку и проверьте правильность указания и каталога COI. • Сценарий помещен в неправильный каталог. Проверьте по контрольному списку правильность использованного каталога CO1 и при необходимости переместите сценарий в нужное место. • Проблема. Отображается текст сценария. Решение. Это происходит потому, что Web-сервер воспринял файл программы как обычный документ. Причин может быть несколько. ограмме назначено неправильное расширение, например вместо ,р1 - .cgi или любое другое. Проверьте по контрольному списку, какое расширение нужно использовать в CGI-программах при работе с данным сервером. • Вы поместили сценарий в неправильный каталог и, используете неправильный URL для доступа к нему. Убедитесь, что сценарий находится в требуемом каталоге и введен правильный URL. • Сервер неправильно сконфигурирован. Если вы используете собственный Web-сервер, внимательно прочтите документацию и проверьте корректность установок. Иногда в дистрибутив Web-сервера входит тестовый CGI-сценарий, попробуйте запустить его. Если вы работаете с коммерческим Web-узлом, убедитесь в том, что сценарий помешен в нужный каталог. При необходимости обратитесь за помощью в службу технической поддержки этого Web-узла • Проблема. Сообщение сервера Forbidden или 403 Error. Решение. Неправильно назначены права доступа к Эта про- блема характерна для Web-серверов, работающих под управлением UNIX. Для того чтобы посмотреть права доступа программ Ш.сд1, перейдите в каталог, в котором она находится, и наберите в командной строке Is -1 Эта команда позволяет отобразить права доступа в подобном виде: -rwe--x 1 user 93 Aug 03 23!06 hello.cgi Права доступа это символы -rwxr-xr-x. Если в вашем случае они не совпадают с приведенными, измените их в соответствии с приведенными выше инструкциями. Устранение ошибок Internal Server Eixor ЕСЛИ появляется сообщение Internal Server Error или 500 Error, это означает, что CGI-профамма каким-то образом не смогла корректно выполнить свою работу.* Это сообщение об ошибке общего назначения может быть получено во многих случаях. Наиболее полезным средством для выявления ошибок, приводящих к этому сообщению, является файл системного журнала сервера. Все запросы Web-страниц заносятся сервером в этот специальный файл для дальнейшего анализа. При этом регистрируются все ошибки, включая ошибки при запуске CGI-программы. Расположение файла системного журнала вы должны были определить при проверке контрольного списка. Обычно новые записи добавляются в конец файла системного журнала. Для просмотра в UNIX нескольких последних записей в файле журнала наберите в командной строке tail server log Эта команда отобразит конец файла журнала. Некоторые Web-серверы имеют специальные утилиты для просмотра таких файлов. Часто такие утилиты представляют собой CGI-программы. Если у вас есть лишь FTP-доступ к Web-серверу, возможно, вам придется загрузить файл журнала на локальный компьютер и просмотреть его там. Если у вас нет доступа к файлам журнала ошибок, дело совсем плохо. В этом случае вам придется устранять ошибку Internal Server Error методом последовательного исключения. Мы составили еще один контрольный список для поиска ошибок. Приведенные сообщения приблизительны и могут изменяться в зависимости от используемого сервера. • Запись в журнале. No such file or directory: exec ohello.cgi failed Возможн1е причин!. • Неправильная строка!! в сценарии. Убедитесь, что в этой строке указан корректный путь к интерпретатору Perl. Проверьте через FTP указанный каталог на наличие в нем интерпретатора Perl или воспользуйтесь командами Is или dir. • При пересылке CGI-программы на сервер через FTP использовался не ASCII-режим. Сценарии нельзя пересылать через FTP между Windows и UNIX в бинарном режиме. • Для CGI-программы в UNIX назначены неправильные права доступа. (См. описание ошибки Forbidden выше в разделе "Проблемы сервера".) • Запись в журналеп t locatI. pm in@ INC- Возможн1е причин!. • У вас неполная установка интерпретатора Perl либо поврежденная, либо очень, старая. Интерпретатор Perl не может определить положение мо-дуж CGI, являющегося частью стандартной установки Perl. Переустановите Perl или попросите об этом системного администратора. Инструкции по установке модулей приведены в приложении к этой книге. • Запись в журнале. Syntax error, warning, Global symbol requires, etc. Возможн1е причин!. • В программе имеется опечатка или синтаксическая ошибка. Для их устранения следуйте инструкциям, приведенным в разделе "А может, виновата сама программа?". 274 Част аммирование на Perl 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 [ 85 ] 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 |