Perl CGI脚本在库中找不到模块
这是我遇到的Apache/Perl问题 我正在perl CGI应用程序中使用CPAN模块。它是电子表格::ParseExcel 我已经安装了带有tar.gz文件的cpan模块 我已经安装了依赖项 但是,我确实是以非root用户的身份这样做的。包含这些文件的库位于用户文件夹/home/user/lib下 现在,我已经在这个盒子上成功地配置了Apache2。html目录是/var/www/html,cgi文件夹是/var/www/html/cgi-bin。我已经验证了它们的有效性,因为该文件夹中所有不需要特殊模块的脚本都可以在我的firefox浏览器中工作,比如hello world、数据转储、简单表单 但是,当我尝试运行使用“电子表格::ParseExcel”的脚本时,我得到一个错误,即在@INC中找不到该模块。但是,我在添加库的脚本开头有一个“use lib”语句 脚本可以在PUTTY中毫无问题地运行。只有在从浏览器运行脚本时,我才会遇到问题 此web应用程序是在另一个框上编写的,在该框上运行良好。因为我当然是在那里发展起来的。我把Apache2放在我的个人Ubuntu机器上,在这里安装了web应用程序和模块,它在我的本地机器上工作 我已经将“chmod-ra+rx”设置为用户库文件夹,所以我认为Apache可以访问该文件夹,除非父目录的设置阻止它?我不必在/home/user文件夹或更糟的/home文件夹上运行它,是吗 对这个问题有什么见解吗 谢谢大家抽出时间 这里有两个想法:Perl CGI脚本在库中找不到模块,perl,apache,cgi,perl-module,Perl,Apache,Cgi,Perl Module,这是我遇到的Apache/Perl问题 我正在perl CGI应用程序中使用CPAN模块。它是电子表格::ParseExcel 我已经安装了带有tar.gz文件的cpan模块 我已经安装了依赖项 但是,我确实是以非root用户的身份这样做的。包含这些文件的库位于用户文件夹/home/user/lib下 现在,我已经在这个盒子上成功地配置了Apache2。html目录是/var/www/html,cgi文件夹是/var/www/html/cgi-bin。我已经验证了它们的有效性,因为该文件夹中所有
use lib
添加的路径如果Apache用户无权访问/home/user,则无法访问/home/user/lib,即使/home/user/lib上的权限允许它访问它
例如,如果您在/root中拥有一个文件,如果您没有访问/root的权限,您仍然无法访问该文件。在@INC错误中列出的第一个目录是有问题的库目录。我不确定apache使用哪个用户试图访问文件“nobody”或“www user”,但我倾向于权限问题。是的,整个库对所有者、组和用户具有r-x权限,而不仅仅是模块的目录。例如,如果模块为/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。希望能有帮助。啊哈,我明白了。谢谢你指出这一点。因此,最好将perl模块的库放在像/usr/local/lib这样的东西中@user589905:…或者只需使
/home/user/
世界可读/世界可执行(drwxr-xr-x
)。在绝大多数情况下,共享主目录中的数据的能力比将其中的所有内容严格私有化更为重要(特别是因为您可以为通常少量的实际敏感数据创建私有子目录)。我面临类似的问题,此解决方案对您有效吗,因为它不适合我。我检查了所有文件夹权限、用户访问权限,但我仍然面临此问题。