Perl CGI Scripts在库中找不到模块

ble*_*ler 5 apache perl cgi perl-module

这是我遇到的Apache/Perl问题.

我在perl CGI应用程序中使用CPAN模块.它是Spreadsheet :: ParseExcel

我已经用tar.gz文件安装了cpan模块.

我已经安装了依赖项.

但是,我确实以非root用户身份执行了此操作.包含这些文件的库位于用户文件夹/ home/user/lib下

现在,我已在此框中成功配置了Apache2.html目录是/ var/www/html,cgi文件夹是/ var/www/html/cgi-bin.我已经验证它们有效,因为该文件夹中不需要特殊模块的所有脚本都可以在我的firefox浏览器中运行,即.你好世界,数据转储,简单形式.

但是,当我尝试运行使用"Spreadsheet :: ParseExcel"的脚本时,我得到的错误是在@INC中找不到该模块.但是,我在添加库的脚本开头有一个"use lib"语句.

脚本可以在PUTTY中运行而不会出现问题.只有从浏览器运行脚本时我才会遇到问题.

这个Web应用程序写在另一个盒子上,并在该盒子上正常工作.因为我当然在那里发展.我将Apache2放在我的个人Ubuntu机器上,并在这里安装了Web应用程序和模块,它可以在我的本地机器上运行.

我已经将"chmod -R a + rx"设置为用户库文件夹,所以我认为Apache可以访问该文件夹,除非父目录的设置阻止了它?我不必在/ home/user文件夹上运行它,或者更糟的是/ home文件夹,是吗?

有关这个问题的任何见解?

谢谢大家的时间!

Tyl*_*r D 1

这里有两个想法:

  1. 关于丢失模块的错误中所说的 @INC 是什么,它是否包含您通过添加的路径use lib
  2. Apache 运行的用户是否有权访问该目录?通常主目录具有拒绝其他帐户遍历的权限。检查模块目录的权限,确保模块的所有目录和文件至少具有 rx 权限。