Perl CGI PHP сеанс Отказано в разрешении - PullRequest
2 голосов
/ 03 декабря 2011

Я пытаюсь получить переменные сеанса PHP в сценарий Perl CGI. Ниже приведен следующий Perl-код, который, кажется, работает для получения мне PHPSESSID, который я затем передаю в PHP :: Session вместе с каталогом, в котором хранятся файлы сеанса.

my $cookie_name='PHPSESSID'; 
my $sess_query = new CGI;
my $session_name = $sess_query->cookie($cookie_name);
my $session = PHP::Session->new($session_name,{save_path =>'/var/lib/php/session/'});

Моя проблема возникает, когда я получаю ошибку "Отказано в разрешении"

[Пт, 2 дек. 16:52:44 2011] upload.cgi: / var / lib / php / session / sess_417ar7qsh4sh853gqs3bj454i5: Отказано в доступе на /var/www/html/xxx/upload.cgi строке 22, реферер :. ..

Строка 22 - это строка PHP::Session->new в приведенном выше коде.

Мой сервер httpd работает как пользователь apache, а скрипты cgi принадлежат apache, как и все файлы sesssion в /var/lib/php/session/, поэтому мне интересно, почему скрипт CGI не сможет читать файлы сеанса.

Я читаю онлайн, где один человек использует LWP в качестве обходного пути, но это не мое предпочтение, так как я чувствую, что это что-то глупое в разрешениях, которые я пропускаю.


ОБНОВЛЕНИЕ: Добавлена ​​информация - вот файлы сессий - как вы видите, файл сессий существует и принадлежит apache, но Perl-скрипт CGI не может их прочитать:

-rw-------. 1 apache apache   0 Dec  2 16:58 /var/lib/php/session/sess_417ar7qsh4sh853gqs3bj454i5
-rw-------. 1 apache apache 126 Dec  2 16:58 /var/lib/php/session/sess_f39ot5ul3bu55uu7d1rg3aqq02

Ответы [ 2 ]

2 голосов
/ 03 декабря 2011

Проблема действительно была в SELinux ... и в этом случае не 1 предупреждение AVC, а 5 - одно предупреждение, соответствующее каждому действию ввода-вывода файла, необходимому для чтения файла в каталоге. они запускаются последовательно, но могут быть разрешены с использованием синтаксиса {} ниже.

это можно решить с помощью:

allow httpd_sys_script_t httpd_var_run_t: dir search;
allow httpd_sys_script_t httpd_var_run_t: file { lock read ioctl open getattr};

Поговорим об использовании ремня и подтяжек!

Спасибо за помощь!

R

0 голосов
/ 03 декабря 2011

... поэтому мне интересно, почему сценарий CGI не может читать файлы сеансов.

В документации это говорит:

save_path

путь к каталогу, где файлы сеанса хранятся .по умолчанию: /tmp.

Не думаю, что вы и этот модуль думаете об одних и тех же файлах сеанса.

...