Доброе время суток.
Есть простенький скрипт:
----------------------------------------------
#!/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
Perl. Не записывает файл из cgi-bin
Видимо не хватает прав на запись в /home/user1/data.txt.
open(file,">$file_path") or die($!);
Спасибо, проблему решил.
Оказалось что право на запись нужно дать не только файлу но и директории где этот файл лежит:
chmod 777 /home/user1/
Странно как это у тебя работает если ты не выставил на файл бит исполнения так:
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);
а еще что-бы это выполнялось не с правами root, а с правами вэбсервера:
chown www:www skript.pl
Пишет неверный пользователь: "www:www"
В принципе, результат в браузере смотреть не нужно.
Задача стоит записать файл конфигурации и файлы видео с источников.