URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID8
Нить номер: 2969
[ Назад ]

Исходное сообщение
"Помогите с выполнением скриптов."

Отправлено leo_25 , 13-Янв-05 18:58 
В общем у меня такя проблема. На станичке сайта есть окошко в которой при загрузке должна появлятся одна из шести таблиц в разном порядке. Так вот она не отображается, а вместо нее вот это
[an error occurred while processing this directive].
А в логах пишет вот это
[Thu Jan 13 16:46:44 2005] [error] [client 212.5.4.100] invalid CGI ref "srv/www/cgi-bin/messager.cgi" in /srv/www/htdocs/ru/main/index.shtml
Невозможно создать файл блокировки: Permission denied at /srv/www/cgi-bin/stat/stat.pl line 24.

[Thu Jan 13 16:46:44 2005] [error] [client 212.5.4.100] Premature end of script headers: /srv/www/cgi-bin/stat/stat.pl
Невозможно создать файл блокировки: Permission denied at /srv/www/cgi-bin/messager.cgi line 51.

Страница указывает на вот этот файл messager.cgi
<!--col_start-->
<!--#exec cgi="srv/www/cgi-bin/messager.cgi"-->
<!--col_end-->
<!--main_end-->

вот часть этого файла.

#!/usr/bin/perl -w

use Fcntl qw(:flock);

#Config Section
my $stat_file = '/srv/www/cgi-bin/logs/messager.txt';

my $lockfile = "block.txt";

my $files_path = '/srv/www/htdocs/ru/includes/';

my @files = ('col1.inc',
             'col2.inc',
             'col3.inc',
             'col4.inc',
             'col5.inc',
             'col6.inc');
#End of Config Section

Проблема возникла после переустановки линукса, до этого всё работало.


Содержание

Сообщения в этом обсуждении
"Помогите с выполнением скриптов."
Отправлено Invisib1e Man , 14-Янв-05 06:16 
Возможно, неправильно выставлены permissions в той директории, где создаётся block.txt. В логах, кажется, так и сказано.

"Помогите с выполнением скриптов."
Отправлено leo_25 , 14-Янв-05 09:45 
Так там вроде все нормально. Вот строки 24
sub get_lock
    {
    open (LOCK, ">$lockfile") || die "Невозможно создать файл блокировки: $!";
    flock (LOCK, LOCK_EX) || die "Невозможно заблокировать файл: $!";
    }

line 51
sub get_lock
    {
    open (LOCK, ">$lockfile") || die "Невозможно создать файл блокировки: $!";
    flock (LOCK, LOCK_EX) || die "Невозможно заблокировать файл: $!";
    }

Подскажите хоть где ичего смотреть и как оно должно выглядеть. Если надо то могу выложить конфиги файлов.
Help!!


"Помогите с выполнением скриптов."
Отправлено leo_25 , 14-Янв-05 10:10 
Да ещё права на файлы стоят 755. Как вроде и должно быть.

"Помогите с выполнением скриптов."
Отправлено Invisib1e Man , 14-Янв-05 10:19 
> Да ещё права на файлы стоят 755. Как вроде и должно
>быть.

Ну да, на файлы... А права на каталог проверяли?


"Помогите с выполнением скриптов."
Отправлено Invisib1e Man , 14-Янв-05 10:37 
Да... и ещё... Кто владелец каталога? Вобщем надо изменить владельца того каталога на apache и выставить права 755.


"Помогите с выполнением скриптов."
Отправлено Invisib1e Man , 14-Янв-05 10:16 
>Так там вроде все нормально. Вот строки 24

Нормально, это как?

>sub get_lock
>    {
>    open (LOCK, ">$lockfile") || die "Невозможно создать файл блокировки: $!";
>    flock (LOCK, LOCK_EX) || die "Невозможно заблокировать файл:
>$!";

И этих строк видно, что файл создаётся в том же каталоге, где лежит скрипт. Разрешите апачу писать в этот каталог и всё будет.

>Подскажите хоть где ичего смотреть и как оно должно выглядеть. Если надо
>то могу выложить конфиги файлов.
>Help!!

Конфиги каких файлов Вы собрались вылаживать? :)


"Помогите с выполнением скриптов."
Отправлено leo_25 , 14-Янв-05 11:02 
>>Так там вроде все нормально. Вот строки 24
>
>Нормально, это как?
>
>>sub get_lock
>>    {
>>    open (LOCK, ">$lockfile") || die "Невозможно создать файл блокировки: $!";
>>    flock (LOCK, LOCK_EX) || die "Невозможно заблокировать файл:
>>$!";
>
>И этих строк видно, что файл создаётся в том же каталоге, где
>лежит скрипт. Разрешите апачу писать в этот каталог и всё будет.
>

Как это сделать объясни плиз. И права на все каталоги 755 так что тут все нормально.


"Помогите с выполнением скриптов."
Отправлено Invisible_Man , 14-Янв-05 11:39 
>Как это сделать объясни плиз. И права на все каталоги 755 так
>что тут все нормально.


su
chown apache:apache /your/path/name



"Помогите с выполнением скриптов."
Отправлено leo_25 , 14-Янв-05 12:54 
>>Как это сделать объясни плиз. И права на все каталоги 755 так
>>что тут все нормально.
>
>
>su
>chown apache:apache /your/path/name
Чего то я не понял это где посать то надо???
Если в командной строке то выдает такое сообщение invalid user

"Помогите с выполнением скриптов."
Отправлено Invisible_Man , 14-Янв-05 13:28 
>Если в командной строке то выдает такое сообщение invalid user

тогда узнайте uid и gid апача и подставьте <uid>:<gid> вместо apache
может он у Вас по другому называется просто...
ну, или поставьте на каталог разрешения 777 %))

uid и gid можно добыть в файле /etc/passwd

выдержка из файла:

root:x:<uid>:<gid>:root:/root:/bin/bash
...
и т.д.
...
bin:x:1:1:bin:/bin:/bin/sh
daemon:x:2:2:daemon:/sbin:/bin/sh
adm:x:3:4:adm:/var/adm:/bin/sh
...
apache:x:72:72:system user for apache-conf:/var/www:/bin/sh
...



"Помогите с выполнением скриптов."
Отправлено leo_25 , 14-Янв-05 14:47 
Kak это узнать. )) Если pidof httpd тол он выдает к примеру 11111 11111 1111 три вида.


"Помогите с выполнением скриптов."
Отправлено leo_25 , 14-Янв-05 15:32 
Млин ничего не получается (((((


"Помогите с выполнением скриптов."
Отправлено leo_25 , 14-Янв-05 15:41 
/your/path/name
это так и должно быть или мне нужно вписать свои имена?



"Помогите с выполнением скриптов."
Отправлено leo_25 , 14-Янв-05 17:32 
Народ так чего больше нет никаких предложений!!!!1


"Помогите с выполнением скриптов."
Отправлено Invisible_Man , 15-Янв-05 04:58 
>Народ так чего больше нет никаких предложений!!!!

pidof Вам не надо, залезьте в /etc/passwd и найдите там httpd, если он у
Вас так называется. Где находится User id и Group id, я Вам показывал.
Если вы найдёте httpd в этом файле, то сделатйте так:

chown httpd:httpd /Естественно/Ваш/путь/до/каталога/надо/сюда/писать

или

chown <uid>:<gid> /ваш_путь/до/каталога

например у меня это выглядит так:

chown apache:apache /var/www/cgi-bin/forum
или
chown 72:72 /var/www/cgi-bin/forum

где 72:72 это uid и gid соответственно.
uid может отличаться от gid если apache находится в группе с другим пользователем!

синтаксис команды chown таков:

chown [ключ] владелец[:[группа]] /файл/или/каталог

Вы и сами можете это узнать набрав в консоли "chown --h" (без кавычек!)

Если у Вас ничего не получается, временно
поставьте разрешения на нужный Вам каталог - 777
сделать это можно так

chmod 777 /ваш/путь/до/каталога

И стучитесь ко мне в аську 99899260

Если я буду на рабочем месте, то постараюсь помочь Вам.
К сожалению, я нахожусь в далёком Иркутске (разница с Москвой 5 часов) и рабочее время у нас заканчивается раньше (в 15:00 по Москве), так что я не могу отвечать на сообщения позже этого времени.

С уважением,
              Invisib1e M@n ©



"Помогите с выполнением скриптов."
Отправлено ACCA , 17-Янв-05 23:38 
>>chown apache:apache /your/path/name
>Чего то я не понял это где посать то надо???
>Если в командной строке то выдает такое сообщение invalid user

В скрипте напиши полный путь в $lockfile, например

my $lockfile = "/your/path/name/block.txt";


Потом загляни в httpd.conf, ищи параметры User и Group. У меня это www-data, поэтому я напишу:

su
chown -R www-data.www-data /your/path/name