| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Perl: разработка для Web > Perl-скрипты и SSI |
| Автор: slang 9.3.2004, 14:57 | ||
На shtm странице пишу
а в IE вместо отображения результата работы скрипта выводится его текст. Может кто подскажет, в чем я могу быть не прав. |
| Автор: GoodBoy 9.3.2004, 15:03 | ||||
Вообще, по хорошему, писать бы не
а
А проблема, скорее всего, кроется в неправильно настроенном веб-сервере... |
| Автор: korob2001 9.3.2004, 16:05 | ||||
Сохрани следующий код в фале time.shtml , в каталог где храниш html файлы:
А следующий код сохрани в каталог cgi-bin и назови файл time.pl
После запусти файл time.shtml |
| Автор: korob2001 9.3.2004, 16:07 |
| To GoodBoy В данном случае это не имеет никакого значения. Архитектура Apache поддерживает разбор CGI вывода, если в нём содержится заголовок Content-type. Хотя вполне возможно проблема действительно в настройках. |
| Автор: GoodBoy 9.3.2004, 16:35 |
| korob2001 Думаю, что ты не прав... Если перед cgi-bin не ставить слеш, то поиск будет проходить относительно того каталога в котором находитмя HTML-файл с инклюдом. Если же слеш есть, то от корня веб-сайта, а каталог cgi-bin виртуально всегда располагается в корне. |
| Автор: korob2001 9.3.2004, 16:52 | ||
Я например всегда писал так и никогда ещё не столкнулся с такой проблемой. Я лишь сказал, что в данной ситуации это не имеет никакого отношения к проблеме. |
| Автор: GoodBoy 9.3.2004, 17:02 | ||
А я и не говорил, что это есть решение проблемы... :-))) Это была просто небольшая поправочка... А дело - скорее всего в веб-сервере!! Нюхом чую!!! :-))))) |
| Автор: slang 10.3.2004, 07:18 | ||
| GoodBoy, скорее всего нюх тебя не подводит, так как я создал предложенные файлы, но результат не принес желаемого. Вывод:
Кстати, почему вы считаете, что я использую Apachi. Вероятно это очень не плохой сервер, но так как я использую Win2k AS, мне гораздо удобнее использовать IIS. К тому-же, в основном я предпочитаю писать на ASP. Как-то он мне ближе показался несколько лет назад, а CGI скриптами занимаюсь не больше месяца, вот и появляются всякие глупые вопросы. Вообще я много читаю хорошего об Apachi, но к сожалению ни разу не встречал чтобы скрипты ASP работали под ним. Может быть я и ошибаюсь и как-то можно настроить их работу в Apachi. Если подскажете заодно и это буду весьма признателен. P.S. Киньте ссылочку на хороший Apachi (если в нем нужен кряк, то желательно с ним). Ну и конечно, если такой существует - то на русском. (если не затруднит - на [email protected] |
| Автор: GoodBoy 10.3.2004, 11:06 |
| http://archive.apache.org/dist/httpd/binaries/win32/ Качай версию 1.3.29. Можно вот эту: http://archive.apache.org/dist/httpd/binaries/win32/apache_1.3.29-win32-x86-no_src.exe Кряк - не нужет, но нужно правильно настроить файл конфигурации. http://www.yandex.ru/yandsearch?text=%ED%E0%F1%F2%F0%EE%E9%EA%E0+apache&stype=www |
| Автор: korob2001 10.3.2004, 14:43 | ||
Пожалуй, это лучший сервер. |
| Автор: korob2001 10.3.2004, 15:30 | ||||||
Выше я писал: Архитектура Apache поддерживает разбор CGI вывода, если в нём содержится заголовок Content-type. Хотя вполне возможно проблема действительно в настройках. Так вот, другие сервера не поддерживают разбор CGI вывода через SSI. Они работают только со статическими файлами, такими как html, txt и т.д. Другими словами они копируют содержимое файла а не результаты его выполнения, что и происходит в твоём случае. Для проверки можно воспользоваться следующим способом: Подправим наш shtml файл:
Затем в этом же каталоге создай файл tm.html со следующим кодом:
Если после запуска фала time.shtml отобразится текущее время, то это и есть подтверждение того о чем я говори выше. Но при этом должно быть разрешено использование JavaScript'ов в настройках браузера. ЗЫ: устанавливай Apache. Может уже и другие сервера поддерживают разбор CGI вывода, но это возможно только в последних весиях других серверов. Удачи. |
| Автор: slang 10.3.2004, 15:59 | ||||
korob2001, ты как и в прошлый раз (IIS+CGI) был прав:
Последний вариант выполняется, пытаюсь поставить Apache. Скачал последнюю версию 2.0.48 в двух версиях (msi и zip). Как позже выяснилось - это не две версии, а одна. MSI - установка сервера, а zip - дополняет его. Но вот к сожалению, мне не удалось настроить пока поддержку ssi. Делаю изменения в конфигурационных файлах
Но вот поддержка ssi все равно не включается, просто игнорирует это текст, как коментарии. |
| Автор: korob2001 10.3.2004, 16:13 |
| Сервер должен знать в каких файлах искать SSI-команды. 1. Сервер можно настроить так, что бы он распознавал SSI документы только в определённом каталоге, каталогах или по всему сайту. 2. Можно настроить сервер так, что бы он разбирал все html файлы в поисках SSI команд или только документы с определённым расширением обычно это .shtml. 3. Можно настроить сервер таким образом, что бы он мог через SSI выполнять внешние программы для генерации вывода из них и включения его в документ. Иногда это полезно, но не безопасно. Напиши чего хочешь ты от каждого пункта. Дело в том, что установка Apache процедура довольно продолжительная. Указав то, что ты хочешь , ты упростишь мне жизнь раза в 3, а то и больше. ;))) ЗЫ: Твоя версия Apache также поддерживает SSL или говоря другими словами протокол https, но в данном случае это к делу не относится. |
| Автор: GoodBoy 10.3.2004, 16:22 | ||||
Лучше пиши:
тогда ты не привязан к конкретному расширению файла. Ну и соответственно должна еще быть строка
Кроме того в секции <Directory " в разделе Options крайне желательно что бы были опции Includes и ExecCGI. И... Зря Апач 2.0 качал... Не понравился он мне!!! 1.3.29 - рулит!!!! |
| Автор: GoodBoy 10.3.2004, 16:26 | ||
2 korob2001
Там файл прям так и называется: apache_2.0.48-win32-x86-no_ssl.exe :-)))))))))))) |
| Автор: korob2001 10.3.2004, 16:35 | ||
Твоя правда. Дело в том, что недавно мне нужен был https и я задавал этот вопрос здесь мне ответили, что версия 2.0 поддерживает SSL =) Но опробовать, пока руки не дошли. Читай тута: http://forum.vingrad.ru/index.php?act=ST&f=5&t=18319 А сейчас, посмотрел на имя фала, действительно там присутствует строка no_ssl А я чуть было АПАЧ не переустановил. Спасибо за поправку. Кстати GoodBoy, может ты подскажешь как SSL установить под WinXP, Apache 1.3.27? Заранее тебе спасибо. |
| Автор: slang 11.3.2004, 06:53 |
| korob2001 Господа, у меня тут какие-то непонятки получаются с конфигурированием. Скачал я несколько инструкций по настройке сервера Apache и приступил к действу. Менял, менял строки, а вот SSI, так и не включается. На воспросы можно ответить так: 1) поддержка SSI во всех каталогах 2) всех файлах 3) ну и конечно что бы он мог через SSI выполнять внешние программы (скрипты CGI) для генерации вывода из них и включения его в документ (собственно ради этого и пришлось ставить Apache вместо IIS. GoodBoy По поводу поддержки SSI в версии apache_2.0.48-win32-x86-no_ssl.exe. С помощью этого дистрибутива она (поддержка SSI) действительно не включается, но есть второй файл httpd-2.0.48-win32-src.zip распаковывая который мы, согласно документации (кстати в этой версии 2.0.48 она частично переведена русский) мы получаем поддержку SSI |
| Автор: GoodBoy 11.3.2004, 10:43 |
| 2 slang О том, что версия 2 не поддерживает SSI разговора и не было!!! Безусловно она его пооддерживает!!! Разговор шел о том, что Apache 2.0 не поддерживает SSL (разница в последней букве!!!) SSI - это включения на стороне сервера, а SSL - это защищенный протокол передачи данных (когда адрес вместо http:// начинается с https://). Кроме того у меня самого были трудности с настройкой версии 2.0 и поэтому я вернулся к 1.3. :-)) |
| Автор: slang 11.3.2004, 14:17 | ||||
| Наконец-то, SSI заработало под Apache. Теперь вопрос встал по поводу CGI-скриптов. Сервер выдает ошибку в логах
А на странице:
В конфигурационных файлах все, вроде-бы, выставил. Кстати настроить его удалось только почти полного его перевода на русский язык. |
| Автор: GoodBoy 11.3.2004, 15:27 |
| а что у Вас прописано первой строкой в time.pl??? Должно быть что-то типа: #!c:/Perl/bin/perl.exe |
| Автор: korob2001 11.3.2004, 23:06 | ||
Либо просто: #!perl -w При устновке ActivePerl путь к интерпретатору Perl прописывается в переменную окружения оболчки PATH. Соответственно оболочка, если она получает команду perl, знает что имеется ввиду приложение C:\Perl\perl.exe или другой путь. |
| Автор: Wowa 12.3.2004, 04:00 |
| Тема ведь вроде бы называется Perl скрипты и SSI ? Ты пытаешься вывести SSI из перл-скрипта? - в скриптах на перле SSI не парсируется вообще. |
| Автор: korob2001 12.3.2004, 04:44 |
| To Admin Нет, речь идёт про первую строку Perl скрипта в OS Win2k. У slang есть два фала. time.shtml и /cgi-bin/time.pl, они описаны на первой странице данного топика. To slang Кстати, вот здесь парень всё довольно не плохо расписал: http://pasuk.boom.ru/Apache.html To GoodBoy Сегодня установил apache_2.0.48-win32-x86-no_ssl.exe. Всё прекрасно работает с такой первой строкой: #!/usr/bin/perl -w Уменя стоит WinXP Pro. |
| Автор: GoodBoy 12.3.2004, 11:17 |
| 2 korob2001 Возможно Апач 2.0 умеет интерпретировать стандартный Юниксовый путь к перлу и заменять его путем прописаным в Винде... ЗЫ. 100 пост!!! :-)))))))))))))) |
| Автор: korob2001 12.3.2004, 11:44 |
| To GoodBoy А до этого у меня стоял Apache 1.3.27 и он тоже понимал такой путь как а UNIX. Я ещё никогда не писал путь типа C:\Perl\bin\perl.exe, хотя многие люди пишут именно так. Почему? При переносе скриптов на сервер нет необходимости изменять первую строку в каждом скрипте, ведь большинство серверов под UNIX'ами. А до Apache я юзал только сервер Xitami. Так там, тоже можно было писать первую строку как в UNIX, т.е. #!/usr/bin/perl -w |
| Автор: GoodBoy 12.3.2004, 12:10 |
| 2 korob2001 Странно... У меня ВиньХРю стоит с 1.3 Апачем и #!/usr/bin/perl не понимает... |
| Автор: slang 12.3.2004, 15:36 | ||
| Поставил скрипты со строкой #!perl -w и все заработало под Win XP+Apache 1.3.29, теперь ломаю голову, как создать несколько виртуальных серверов при наличии нескольких IP-адресов. Указываю несколько виртуальных хостов, а используется только последний, код следующий:
И где здесь ошибка? Вроде все по рекомендациям сделал. Там еще есть второй вид настройки, но как использовать его....? |
| Автор: GoodBoy 12.3.2004, 16:05 |
| 2 slang Вот тут и я сел... Так и не смог под виндой несколько виртхостов сделать... :-(((( Правда я все вешал на 127.0.0.1, но имена-то были разные... И - хрен!!! |
| Автор: slang 12.3.2004, 16:35 | ||
Получилось у меня настроить в конфах пишу:
Затем на машине с DNS-сервером прописываю эти адреса (перед этим, конечно добавил адреса к сетевой карте) и виртуальные серваки работают. Еще не пробовал SSI, CGI и т.д., но думаю с ними проблем не возникнет. |
| Автор: GoodBoy 12.3.2004, 16:47 | ||
А если просто одна локальная машина под Вин ХР?? Даже без сетевухи?? |
| Автор: slang 12.3.2004, 17:05 | ||
| DNS я использовал чтобы адреса были нормальными, но если написать только IP в Apache, то по этим IP у меня запускались нужные страницы <VirtualHost 10.10.11.100> видимо можно здесь прописать не 10.10.11.100, а 127.0.0.1, 127.0.0.2 и т.д. А вот с SSI и CGI, я оказался не прав, не хотят опять работать, куда там писать эти директивы, попробовал так
Просто стянул с основного сервера, но ни фига не получается, может есть идеи? |
| Автор: slang 12.3.2004, 17:29 | ||
| Получилось настроить SSI и Perl, теперь мучаюсь с PHP. С первым просто взял и скопировал все с главного, только без коментариев, получилось:
|
| Автор: GoodBoy 12.3.2004, 17:30 |
| Вот в данном раскладе у тебя SSI будет работать (предположительно Это из-за AddHandler server-parsed .shtml. Замени на AddHandler server-parsed .htm .html .shtml. Если опять не заработает скинь мне свой конфиг - попробую посмотреть!!! |
| Автор: slang 12.3.2004, 17:53 |
| работает и так и так. Нет простого скрипта, чтобы проверить PHP и куда его писать, думаю, что также в cgi-bin? |
| Автор: GoodBoy 12.3.2004, 17:58 |
| РНР скрипты работают в любом каталоге, насколько я знаю... Так что у тебя с Perl через SSI?? Заработало?? |
| Автор: slang 12.3.2004, 18:01 | ||
Да |
| Автор: GoodBoy 12.3.2004, 18:21 |
| slang :-)))) Рад за тебя!! |
| Автор: rgb 13.9.2006, 09:46 |
| Попрошу сильно не бить за такой вопрос: Как запретить посмотр содержимого каталога? Например, чтобы набрав что-то в духе 192.168.0.111/img не выводилось содержимое, а какое-нибуть сообщение, отправляющее пытливый ум в далекие дали. |
| Автор: Nab 13.9.2006, 10:15 |
| Самое простое, положить туда пустой index.html ну или права в веб-сервере настроить в верно.... |
| Автор: rgb 13.9.2006, 11:55 |
| а как на счет настроек самого apache? |
| Автор: nitr 13.9.2006, 12:03 |
| rgb, это тут тож подразумевалось З.Ы.: ты видел дату поста? Имхо модерам прикрыть надо, а тебе создать новую ТЕМУ! |