这是我遇到的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文件夹,是吗?
有关此问题的任何见解?
谢谢大家的时间!
答案 0 :(得分:3)
如果Apache用户无法访问/ home / user,则无法访问/ home / user / lib,即使/ home / user / lib上的权限允许它访问它。
例如,如果你在/ root中拥有一个文件,如果你没有访问/ root,你仍然无法访问它。
答案 1 :(得分:1)
这里有两个想法:
use lib
添加的路径?