我第一次尝试用手 - > Ubuntu上的 Apache - Perl(CGI)。
Apache服务器在/var/www
文件夹中正常运行,可用于默认的index.html
文件。但是因为我想运行CGI脚本,所以我也安装了(以防万一)DBI,正如一些论坛所建议的那样。我设置了对cgi-bin
脚本所在的select.cgi
文件夹的完全访问权限。我尝试多次调整select.cgi
脚本将库重定向到Perl库,但无济于事。我修改了httpd.conf
文件并将目录路径设置为select.cgi
文件夹。那没用。我还定义了ScriptAlias
,并将其设置为工作目录。那也行不通。
有没有人有任何有用的指针。感谢。
答案 0 :(得分:4)
这不是您想要的确切解决方案,但整体构思如下所示。
如何解决Cant locate xxxx.pm in @INC path
问题
默认情况下,perl会在标准库路径和当前目录中查找模块。 有时您需要使用安装在非标准位置的某些模块;有几种方法可以解决这种情况:
检查您的模块是否在@INC
路径中使用。
示例:
perl -e 'use SOAP::Lite;'
perl -e 'use Error;'
如果在安装了SOAP::Lite
和Error
的系统上运行这些命令,Perl将只是从这些命令返回而不打印任何输出。
要检查当前标准库路径的使用:
perl -le 'print foreach @INC'
如果您具有管理权限,那么最佳解决方案是在任何系统定义的库路径中安装该模块。
设置环境变量PERL5LIB
在查看标准库和当前目录之前,Perl将在PERL5LIB
环境变量中指定的目录中查找模块。
因此,您可以设置此变量来定位模块。
示例:
# For unix like systems
PERL5LIB=/home/path/lib:/usr/another/path/lib; export PERL5LIB
注意:在unix上用冒号分隔目录,在Windows上用分号分隔。
如果从命令行运行代码,请使用-I
参数。语法应该类似于。
perl -I /home/path/lib -I /usr/another/lib script.pl
您还可以在脚本中添加库路径
在脚本中包含路径的命令是:use lib path
。
示例:
#!/usr/bin/perl
use lib "/home/path/lib";
use lib "/usr/another/lib";
use MyCustomModule;