LinuxForum.Fans
Тема

Perl. Не записывает файл из cgi-bin

Автор: svad05 5 сообщений 2776 просмотров
#35671

Доброе время суток.
Есть простенький скрипт:
----------------------------------------------
#!/usr/bin/perl
print "Test";
$file_path = "/home/user1/data.txt";
open(file,">$file_path");
print file "бла-бла-бла";
close (file);
----------------------------------------------
Так вот из командной строки он выполняется,создает файл и записывает в него.
А если поместить его в каталог apache cgi-bin и попытаться запустить в браузере, то скрипт выполняется но файл не создает.
Права на скрипт назначил 777.
Почему так? И как заставить скрипт записывать файл из cgi-bin?
P.S: ОС Linux Debian 5.0.4

#35676

Видимо не хватает прав на запись в /home/user1/data.txt.
open(file,">$file_path") or die($!);

#35678

Спасибо, проблему решил.
Оказалось что право на запись нужно дать не только файлу но и директории где этот файл лежит:
chmod 777 /home/user1/

#37652

Странно как это у тебя работает если ты не выставил на файл бит исполнения так:

chmod 755 skript.pl

а еще что-бы это выполнялось не с правами root, а с правами вэбсервера:

chown www:www skript.pl

для того что-бы в браузере видеть результат надо отдать правильный заголовок ему:

#!/usr/bin/perl -w
use strict;
use CGI::Carp 'fatalsToBrowser';
use CGI qw(:standard);

my $cgi = new CGI;
print $cgi->header(-charset => 'utf-8');

print "Test";
$file_path = "/home/user1/data.txt";
open(file,">$file_path") or die "$!";
print file "бла-бла-бла";
close (file);

#48268

а еще что-бы это выполнялось не с правами root, а с правами вэбсервера:

chown www:www skript.pl

Пишет неверный пользователь: "www:www"

В принципе, результат в браузере смотреть не нужно.
Задача стоит записать файл конфигурации и файлы видео с источников.

Войдите или зарегистрируйтесь, чтобы ответить.