Forum Webscript.Ru
Программирование => Perl => Тема начата: Drow Elf от 16 Марта 2002, 07:47:31
-
Спасите!!! У меня CGI скрипт вываливает страницу, в этой странице я делаю несколько Includes, как сделать чтобы сервак их читал, директория, где находится скрипт имеет Includes.
-
Может у тебя для данной директории установлен параметр не "Includes", а "IncludesNOEXEC"? Он запрещает исполнение сценариев CGI командами #exec и #include.
Но, скорее всего, ошибка(и) в самих CGI?
-
Стоп, может я не так понял?.. Если у тебя CGI генерирует страницу с директивами SSI, то они и не должны работать!
-
CGI генерирует страницу с директивами SSI, то они и не должны работать!
Истину глаголишь
Drow Elf расскажи что именно надобно - в SSI однозначно должна помочь :)
-
Вот в этом и проблемма, что скрипт создает документ, а в нем директивы :( есть какие-нибудь идеи?
-
есть какие-нибудь идеи?
а) избавиться от этих директив вообще
б) написать свой парсер (что мешает в скрипте, который создает этот документ, обрабатывать самому эти директивы?)
в) воспользоваться для этого готовым модулем (каким - не помню, поищи на форуме, кажется уже было) - но это лишняя нагрузка
-
Drow Elf К "Я" добавлю ещё создавать документ без скрипта...
-
кидай в корень сайта .htaccess с таким содержанием:
#Вырезка мз моего:
# -Turn on SSI-
AddType text/html .shtml .shtm .htm .html .sht .ht
AddHandler server-parsed .shtml .shtm .htm .html .sht .ht
Options Indexes FollowSymLinks Includes All
-
Тут что, одни бакланы?
Да нет, не одни ;), ОДИН ;))
Он пытается слить cgi & ssi, баклан ;))) а не просто не может ssi обработать ;)
-
Тут что, одни бакланы?
Это в рамках самокритики? Не поможет твой .htaccess
AddHandler server-parsed .shtml .shtm .htm .html .sht .ht
И что во всех таких файлах у тебя есть директивы SSI? Нет?
Неслабо же ты сервер нагружаешь :(
Options Indexes FollowSymLinks Includes All
"Indexes FollowSymLinks Includes" - здесь совершенно лишние. Ты их всех (и не тоько их) параметром "All" включаешь.
-
Замени:
AddType text/html .shtml .shtm .htm .html .sht .ht .pl .cgi
AddHandler server-parsed .shtml .shtm .htm .html .sht .ht .pl .cgi
-
Options Indexes FollowSymLinks Includes All - Я знаю, но в одной из версий Russian Apache был такой баг, что оно не работало, с тех пор и осталось.
AddHandler server-parsed .shtml .shtm .htm .html .sht .ht - Я, во-первых, плачу за хостинг. Во-вторых, это, уже не моя строка. Я же не знаю, что у него там за расширения!
ВОТ.
-
Попробовал на серваке - действительно не работает.
Стоит просто открывать в соответствующих скриптах файлы и вставлять их содержимое. (функции open, print..)
-
ЯТочнее работает, но не совсем, как хотелось бы...
-
SteelRat
Options Indexes FollowSymLinks Includes All - Я знаю, но в одной из версий Russian Apache был такой баг, что оно не работало, с тех пор и осталось.
Очень странно. Но я думаю, что это уже в далеком прошлом. Сечас нет никакого смысла так писать.
AddHandler server-parsed .shtml .shtm .htm .html .sht .ht - Я, во-первых, плачу за хостинг.
Все платят. И, именно по этому, стараются минимизировать нагрузку - в конечном счете это (пусть и незначительно) будет влиять на скорость загрузки твоих страничек.
Во-вторых, это, уже не моя строка. Я же не знаю, что у него там за расширения!
Что значит не твоя? Ты платишь и не знаешь что там за строки и расширения? :) Этой строкой ты говоришь серверу, файлы с какими расширениями (твои файлы) нужно передавать обработчику "server-parsed" модуля "mod_include".
-
SteelRat
Во-вторых, это, уже не моя строка. Я же не знаю, что у него там за расширения!
Я не догнал сразу... Видимо ты говорил про того, кто задал вопроc?!
-
Укажите хоть одного, кто указал рбочий метод.
Я указал - открывать в скрипте файл и печатать его содержимое.
.htaccess метод не работает, потому, что надо править сам httpd.conf и выставлять параметры директорий, но задающему такой вопрос во-первых это будет сложно. Во-вторых никто не даст (я, лично, не дам) вставлять параметры на бесплатных серваках (да и на некоторых платных тоже).
Так что стоит вспомнить, что молчание - золото. Для некоторых.
ВОТ.
-
Если быть точнее - надо поставить Includes* на /cgi-bin/
И выставить хандлеры так, чтобы .pl .cgi не были text/html а cgi-script
-
через .htaccess это нельзя.
-
Если быть точнее - надо поставить Includes* на /cgi-bin/
И выставить хандлеры так, чтобы .pl .cgi не были text/html а cgi-script
Если правильно понял - использоввать последовательно два обработчика для одних и тех же файлов. В принципе, Apache этого не позволяет, но есть обходные пути (даже без редактирования главного конфигурационног файла)... если не поленюсь, найду.
А вообще, овчинка выделки не стоит. Такой ситуации надо избегать (см. 4 варианта выше).
-
OFF
SteelRat Груб, и невоспитан, не вник в суть вопроса, наехал, наехал повторно. Попал в игнор. Очень неприятно.
END OFF
А вообще всё таки молодой человек задавший вопрос делает явно не то и не так.. Ему бы лучше сесть и объяснить что он хочет - имхо это делается по другому - если я правильно уловила что он хочет...
А? Вопрошающий? :)
-
ЖеньКа
Женщины как всегда мудры! :)
Я тоже не люблю ругаться.
Drow Elf, если вопрос еще не снят, отзовись...
-
#Before "print" value:
$mycoolfullwaytorootofsite = \'/var/www/html\';
$currentline_that_will_be_verifyed = $currentline_befor_print;
if ($currentline_that_will_be_verifyed =~ m/)+.+//g;
open(SSIFILE,"$mycoolfullwaytorootofsite/$currentline_that_will_be_verifyed") || die ("Нихрена не открывается");
@SSIFILE = ;
close(SSIFILE);
for(my $yo = 0; $yo < @SSIFILE; $yo++) {
print "$SSIFILE[$yo]";
}
}
#BOT.
#It works. Veryfied.
#//Generated by The Stainless Steel Rat
-
Как я топик "раздвинул".
Во всех смыслах.
;-).
-
форум в некоторых местах пробелы поставил.. Ща попробую вправить...
-
$currentline_that_will_be_verifyed =~ s/(" --> )+.+//g; на
$currentline_that_will_be_verifyed =~ s/(" -->)+.+//g; (лишний пробел - в коде не правится)
-
Короче, после " --> идёт сразу скобка, без пробела.. И вообще, там скобки везде впритык..
-
Где это я был груб?
-
[moderated on]
Короче, после " --> идёт сразу скобка
Приведи мысли в порядок, иначе попадешь в игнор не только к ЖеньКе!
[moderated off]
А по топику:
use CGI::SSI;
и perldoc на эту тему.
-
#$currentline_befor_print = $curline;
#$mycoolfullwaytorootofsite = \'/var/www/html\';
#$currentline_that_will_be_verifried = $currentline_befor_print;
#if ($currentline_that_will_be_verifried =~ m/)+.+//g;
#open(SSIFILE,"$mycoolfullwaytorootofsite/$currentline_that_will_be_verifried") || die ("Нихрена не открывается");
#@SSIFILE = ;
#close(SSIFILE);
#$SSIcontent = \'\';
#for(my $yo = 0; $yo < @SSIFILE; $yo++) {
#$SSIcontent = "$SSIcontent"."$SSIFILE[$yo]";
#}
#$curline = $currentline_that_will_be_verifried =~ s/()/$SSIcontent/g;
#}
-
у меня таже проблема.....
по поводу представленного скрипта: куда это ставить?
-
у меня таже проблема.....
по поводу представленного скрипта: куда это ставить?
См. ответ NeoNox
http://forums.webscript.ru/showthread.php?s=&postid=28833#post28833
-
2SteelRat кустарный метод однако ;)
-
проссто и понятно, что и как работает...
По поводу вставки:
$curline в первой строке - строка с хтмл кодом, в которой могут быть ssi вставки.
вконце выдаися сирока с подставленным содержанием.
ЗЫ: имена переменных, по-моему, неоднозначно говорят сами за себя.
ЗЫ2: производится ВСТАВКА содержания файлов. Скрипты, подключённые таким макаром, вставляться не будут (будет вставлен код скрипта)
-
http://search.cpan.org/search?module=CGI::SSI_Parser