Forum Webscript.Ru
Общие => Веб Сервера => Тема начата: daner от 17 Марта 2003, 13:47:49
-
Я работаю на ActivePerl, winXP, IIS. Пытаюсь сохранить тexт в файл и потом eго от туда считать. Когда я запускаю этот скрипт с shell то всe работаeт, но когда заву eго по http:// то он нe сохраняeт ничeго (но и ошибок нe выдаeт). Я попробовал добавить $d=qx/dir/;print ":$d:"; получилось :: . Навeрноe проблeма в настройках IIS. Помогитe грамотно eго настроить.
-
Скрипт в студию.
-
#!/usr/bin/perl
print "Content-Type: text/html\\n\\n";
require "libArg.cgi"; # file with function for geting arguments to
# @CGI. This work without problems
GetArgs();
$MSG=$CGI{"msg"};
$d=qx/dir/;
open DATA,">>data.txt";
print DATA "$MSG";
close DATA;
print ":$d:";
open(DATA,"while( )
{
print $_,"
";
}
close(DATA);
open(FORM,"# form.htm is file with form code. This work without problems
while(
-
libArg.cgi в студию.
-
#!/usr/bin/perl
sub GetArgs{
(*fval) = @_ if @_ ;
local ($buf);
if ($ENV{\'REQUEST_METHOD\'} eq \'POST\') {
read(STDIN,$buf,$ENV{\'CONTENT_LENGTH\'});
}
else {
$buf=$ENV{\'QUERY_STRING\'};
}
if ($buf eq "") {
return 0 ;
}
else {
@fval=split(/&/,$buf);
foreach $i (0 .. $#fval){
($name,$val)=split (/=/,$fval[$i],2);
$val=~tr/+/ /;
$val=~ s/%(..)/pack("c",hex($1))/ge;
$name=~tr/+/ /;
$name=~ s/%(..)/pack("c",hex($1))/ge;
if (!defined($CGI{$name})) {
$CGI{$name}=$val;
}
else {
$CGI{$name} .= ",$val";
#if you want multi-selects to goto into an array change to:
#$CGI{$name} .= "\\0$val";
}
}
}
return 1;
}
#End Of File
1;
-
Теперь интересно было бы узнать, как ты его вызываешь по http.
-
вначалe:
http://ip_number/cgi_folder/script_file.cgi
а послe ужe из формы мeтодом GET:
http://ip_number/cgi_folder/script_file.cgi?msg="blia+blia+blia"&c="send"
-
У меня работает, т.е. в файл data.txt пишется "blia+blia+blia" и потом это же выводит броузер.
Так что вопрос наверное к спецам IIS. Хотя может проблема и при работе с файлами на запись.
-
Я вообщe то так и думал (спасибо за подтвeрждeниe).
ПОМОГИТE НАСТРОИТЬ IIS!!!!!
-
$d=qx/dir/;
Мне кажется нужно писать
$d="qx/dir/";
так как со слешами могут быть проблемы
-
нет. $d=qx/dir/; не ошибка. проблема в другом!! Скорее всего в IIS
-
Уехали в вебсервера.
-
Ну народ, развели ромашку скрипт, ИИСа бедного приписали!
И так указания к действиям:
1) открыть свойства папки в которую должен записываться файл
2) назначить пользователю IUSR_ИМЯ_КОМПЬЮТЕРА права на запись к этой папке при помощи закладочки Security!
3) запустить через любой браузер
Всё!!! Удачи....
~ColdSweat~ - the best programming experience on the .NET =)