Это проблема Apache/Perl, которая у меня есть.Perl CGI Сценарии не могут найти модули в библиотеке
Я использую модуль CPAN в своем приложении CGI perl. Это Spreadsheet :: ParseExcel
Я установил модуль cpan с файлами tar.gz.
Я установил зависимости.
Однако я сделал это как пользователь без полномочий root. Библиотека, содержащая эти файлы, находится под папкой пользователя,/home/user/lib
Теперь я успешно настроил Apache2 в этом поле. Каталог html - это/var/www/html, а папка cgi -/var/www/html/cgi-bin. Я подтвердил, что они работают, потому что все сценарии в этой папке, которые не требуют специальных модулей, работают в моем браузере Firefox. привет мир, дампы данных, простые формы.
Однако, когда я пытаюсь запустить скрипты, использующие «Таблицу :: ПарсЭксэл», я получаю сообщение об ошибке, что модуль не может быть найден в @INC. Тем не менее, у меня есть инструкция «use lib» в начале скрипта, который добавляет библиотеку.
Сценарии могут запускаться в PUTTY без проблем. Я получаю эту проблему только при запуске скрипта из браузера.
Это веб-приложение написано на другой упаковке и отлично работает на этой коробке. Потому что я там развился, конечно. Я положил Apache2 на свою личную машину Ubuntu и установил здесь веб-приложение и модули, и он работает в моем локальном поле.
Я установил «chmod -R a + rx» в папку библиотеки пользователей, поэтому я думаю, что Apache имеет доступ к этой папке, если только настройки родительского каталога не блокируют его? Мне не нужно запускать это в папке/home/user, или, что еще хуже, в папке/home, не так ли?
Любые идеи по проблеме?
Благодарим вас за ваше время!
Первый каталог, указанный в ошибке @INC, является каталогом библиотеки. Я не уверен, какой пользователь apache использует, чтобы попытаться получить доступ к файлам «nobody» или «www-user», но я склоняюсь к проблеме с разрешениями. Да, у всей библиотеки есть права доступа r-x для владельца, группы и пользователей. – bleutyler
Не только каталог модуля. Например, если модуль находится в /home/tydel/lib/perl/Net/BoogieTime.pm, для каждого каталога из/up потребуется минимум o + rx.Это включает/home,/home/tydel,/home/tydel/lib и/home/tydel/lib/perl,/home/tydel/lib/perl/Net и, наконец,/home/tydel/lib/perl/Net /BoogieTime.pm потребуется o + r. Надеюсь, это поможет. –