Анимация
JavaScript


Главная  Библионтека 

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

Что делать, если 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