[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

CGI и Perl скрипты на apache2 плохо взаимодействуют - нет доступа к файловой системе из perl скрипта.



Здравствуйте. ;-)
Я работаю с сервером apache2 на Debian Linux. Не разу не пробовал
создавать perl скрипты для взаимодействия с html страницами. Вот решил
попробовать. Нашел ссылку в инете "Введение в Perl" и создал html
страничку с формой, и testform.pl скрипт (который поместил в папку
/usr/lib/cgi-bin/ . В папке /var/www/apache2-default/ создал файл
index.html с таким содержанием:

<html> <head> <title>Test Form</title> </head> <body> <form
action="http://localhost/cgi-bin/testform.pl"; method=post> <b>Введите
Ваше имя: </b> <input name="user_name" value="" size=20> <input
type="submit" value="Зарегистрировать"> </form> </body> </html>

Это форма, которая будет передавать введенное имя пользователя через
метод POST.

Скрипт perl стандартный, простой. Вот его содержимое:

#!/usr/bin/perl
# Read and parse input from the web form
read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'});
@pairs = split(/&/, $buffer);
foreach $pair (@pairs) {
($name, $value) = split(/=/, $pair);
$value =~ tr/+/ /;
$value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
$value =~ s/<!--(.|\n)*-->//g;
$input{$name} = $value;
}

# Save the user output in a file
$targetfile = "/var/www/apache2-default/names.html";

open (NAMEFILE, ">>$targetfile");
print NAMEFILE "<h3>Имя: ",$input{'user_name'},"</h3>\n";
print NAMEFILE "<p><hr><p>\n";
close (NAMEFILE);

# Send a message back to the user
print "Content-Type: text/html\n\n";
print "<h3>Спасибо, что заполнили форму</h3>\nНажмите ";
print '<a href="http://localhost/apache2-default/names.html";>сюда</a>';
print ", чтобы увидеть Ваш ввод.\n";

Запускаю сервер, появляется страничка с формой, ввожу имя, и  в папке
/var/www/apache2-default/ должен создаваться файл names.html.

Но файл НЕ СОЗДАЕТСЯ (даже если запускаю Firefox с правами root). Хотя в
браузере появляется результат работы этого testform.pl скрипта (то есть
появляется интернет страничка с  сылкой на файл
http://localhost/apache2-default/names.html.
При попытке запуска этого perl скрипта в консоли (НЕ через браузер)
testform.pl скрипт нормально создает файл names.html. :-(

Я думаю что у моего сервера apache2 не хватает прав на создание файлов
(нет доступа на чтение и запись файлов). :-(   Но как мне сделать так,
чтобы html документы и perl скрипты нормально взамиодействовали со всеми
максимальными правами (чтени-запись файлов, доступ к директориям и т.д.)
. :-( Подскажите пожалуйста.


Reply to: