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: