Perl & Apache Http-сервер: не может сделать связь MLDBM, когда сценарий CGI выполнен с сервера, но в порядке, когда выполняется из командной строки. Почему?

StackOverflow https://stackoverflow.com/questions/3060262

Вопрос

пожалуйста помоги! Я действительно собираюсь с этой проблемой!

У меня есть скрипт CGI Perl, и он всегда терпит неудачу в следующей строке при выполнении с HTTP-сервера Apache:

tie %db, 'MLDBM', "$data_path/$db_name.db", O_RDONLY, 0640 or die $!

И ошибка разрешена запрещено:

Программная ошибка:

Разрешение запрещено в / var / www / cgi-bin / bechange / pages / line 381.

За помощью, пожалуйста, отправьте почту веб-мастеру (root @ localhost), давая это сообщение об ошибке и время и дату ошибки.

Но когда выполняется из командной строки, она работает без проблем.

Я полагал, что каталоги и файл связаны с правильными разрешениями.

Так что еще я пропустил? Какие конфигурации в Apache's httpd.conf я мог бы ошибаться? По общему признанию, у меня не было никакого предыдущего опыта с HTTP-сервером Apache HTTP, так что это в значительной степени мой первый раз играя с ним. Тем не менее, я прочитал руководства не раз, чтобы искать вещи, на которых я мог ошибаться, но я ничего не заметил. Но я мог бы ошибаться, конечно.

Спасибо!!

Это было полезно?

Решение

Вы подтвердили это $data_path а также $db_name Содержать то, что вы думаете, они делают?

Является $data_path Абсолютный путь, который не зависит от активной идентичности пользователя или домашнего каталога?

Что значит ls -l $data_path/$db_name.db Показать до владения и разрешениями файла?

Я никогда не бегаю по всему (не слышу) что-либо в Apache, который предотвратит разрешение процесса CGI для открытия файлов, поэтому я очень сомневаюсь, что это проблема конфигурации Apache. Скорее всего, он либо ищет неправильный файл или разрешения файла неверны для пользователя, который Apache запущен процессом CGI.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top