Грабли с CGI на PERL - создание файлов скриптом

Обсуждение технических вопросов по продуктам Novell

Грабли с CGI на PERL - создание файлов скриптом

Сообщение SlideX » 27 фев 2004, 15:42

Есть простенький скрипт:

#!/usr/bin/perl
use IO::File;
$file="data:/web/test.txt";
open(FH,">$file") or die("$!: $file");
close(FH);

так вот - во время исполнения орет Permission Denied.
Что нужно, чтобы скрипт мог создавать файлы?

P.S. PERL_ROOT=data:/web
SlideX
 
Сообщения: 20
Зарегистрирован: 12 сен 2003, 11:09

Сообщение Михаил Григорьев » 27 фев 2004, 18:44

У вас проблема не в скрипта а в Perl'е

print "Content-type: text/html\n\n";
use IO::File;
$file="web:/test.txt";
open(FH,">$file") or die("$!: $file");
close(FH);

Без проблем отработал

Какая версия NW? Какой Web-сервер? (Apache, Enterprise)
Версия Perl'а?
Если все на Apache то httpd.conf покажите
Аватара пользователя
Михаил Григорьев
 
Сообщения: 1462
Зарегистрирован: 04 июн 2002, 12:22
Откуда: Челябинск

Сообщение SlideX » 28 фев 2004, 09:29

У меня тоже подозрение, что проблема в настройках Апача, т.к. с консоли этот скрипт отрабатывает без проблем.
Стоит NetWare 6.0 c Apache 1.3 Perl 5.8

Подскажите примерно, где может таиться косяк? может в этом месте:

DocumentRoot "data:/web"
<Directory "/">
Options FollowSymLinks
AllowOverride None
Order deny,allow
deny from all
</Directory>

<Directory "data:/web">
Options Indexes FollowSymLinks MultiViews Includes
AllowOverride None
Order allow,deny
allow from all
</Directory>

Весь Conf постить не решился, но если нужно будет - запостю...
SlideX
 
Сообщения: 20
Зарегистрирован: 12 сен 2003, 11:09

Сообщение Михаил Григорьев » 28 фев 2004, 10:59

SlideX писал(а):Стоит NetWare 6.0 c Apache 1.3 Perl 5.8


1.3 дык после 3 есть еще важные цифры

У меня стоит 1.3.29 А у вас?

SlideX писал(а):Подскажите примерно, где может таиться косяк? может в этом месте:

DocumentRoot "data:/web"
<Directory "/">
Options FollowSymLinks
AllowOverride None
Order deny,allow
deny from all
</Directory>

<Directory "data:/web">
Options Indexes FollowSymLinks MultiViews Includes
AllowOverride None
Order allow,deny
allow from all
</Directory>


Вот тут как раз всё нормально, здесь описаны как раз корневая директория веб-сервера, когда вы набираете http://server то как раз открывается содержимое data:/web, только не понятно с какого перепуга вы Perl скрипты туда же помещаете, они как раз не в ней должны быть (не в корневой), это грубейшая ошибка.

SlideX писал(а):Весь Conf постить не решился, но если нужно будет - запостю...


Весть и не нужно постить, у вас примерно вот что должно быть в httpd.conf чтобы Perl скрипты выполнялись

AddHandler lcgi-script nlm pl cgi
LCGIModuleMap sys:\nsn\lcgi\scrptpgs.nlm .asp .nsp /sp
LCGIModuleMap sys:\nsn\lcgi\cgi2ucs.nlm .bas /nsn
LCGIModuleMap sys:\perl\lcgi\cgi2perl.nlm .cgi .pl /perl
AddEnvVar PERL_ROOT /perl/web

ScriptAlias /perl/ "sys:/perl/web/"
<Directory "sys:/perl/web">
AllowOverride None
Options ExecCGI
Order allow,deny
Allow from all
</Directory>

дык вот все скрипты в этом случае лежат в sys:/perl/web/ а вызываются через web так http://server/perl/ваш-скрипт.pl

Поищите, у вас должны быть такие директивы, если только вы их не удалили
Аватара пользователя
Михаил Григорьев
 
Сообщения: 1462
Зарегистрирован: 04 июн 2002, 12:22
Откуда: Челябинск

Сообщение SlideX » 29 фев 2004, 06:23

Тот же самый = 1.3.29
SlideX
 
Сообщения: 20
Зарегистрирован: 12 сен 2003, 11:09

Re: Грабли с CGI на PERL - создание файлов скриптом

Сообщение Владимир » 01 мар 2004, 06:26

SlideX писал(а):так вот - во время исполнения орет Permission Denied.
Что нужно, чтобы скрипт мог создавать файлы?

Попробуй в sys:\system\nwsec.ini
PERL=OFF
Владимир
 
Сообщения: 179
Зарегистрирован: 22 июн 2002, 12:18
Откуда: г.Мирный

Сообщение SlideX » 02 мар 2004, 06:05

PERL=OFF проканало!

А можно ли оставить PERL=ON, залогинить скрипт так, чтобы функция open() работала?
SlideX
 
Сообщения: 20
Зарегистрирован: 12 сен 2003, 11:09

Сообщение Владимир » 02 мар 2004, 06:35

Можно. Тогда в скрипте надо логиниться в НДС, скрипт получит полномочия залогининого пользователя. Пример ndslogin.pl в примерах, которые ставит PERL.
Владимир
 
Сообщения: 179
Зарегистрирован: 22 июн 2002, 12:18
Откуда: г.Мирный

Сообщение SlideX » 02 мар 2004, 07:56

С логином тоже получается! Вот только достает подгрузка модулей _ERROR.NLM и _NWDIR.NLM при каждом обращении к скрипту - можно ли этого избежать?

И еще: можно реализовать нужный доступ в каталоги с помощью .htaccess вместо логина скрипта или в Нетвари он не используется?
SlideX
 
Сообщения: 20
Зарегистрирован: 12 сен 2003, 11:09

Сообщение Владимир » 02 мар 2004, 09:12

Поищи по форуму. Это уже обсуждалось.
Владимир
 
Сообщения: 179
Зарегистрирован: 22 июн 2002, 12:18
Откуда: г.Мирный

Сообщение Михаил Григорьев » 02 мар 2004, 09:45

SlideX писал(а):И еще: можно реализовать нужный доступ в каталоги с помощью .htaccess вместо логина скрипта или в Нетвари он не используется?


Да можно

.htaccess
Код: Выделить всё
AuthName "TEST"
AuthType Basic
AuthNDSTree CHERTS_TREE
AuthNDSContext O=CHERTS OU=TEST.O=CHERTS
AuthNDSRequireSSL Off
require valid-user
Аватара пользователя
Михаил Григорьев
 
Сообщения: 1462
Зарегистрирован: 04 июн 2002, 12:22
Откуда: Челябинск


Вернуться в Novell

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 58

cron