Perl 使用库相对路径不工作

Perl 使用库相对路径不工作,perl,path,Perl,Path,我有一个perl脚本 #!/usr/bin/perl use strict; use lib 'lib'; use SOME_MOD; 这在我的旧服务器上运行。 在新服务器上,它只适用于绝对路径,如 #!/usr/bin/perl use strict; use lib '/var/www/apps/myapp/lib'; use SOME_MOD; 我错过了什么?在@INC中的目录总是相对于当前工作目录,但是一些web服务器将cwd设置为/。如果需要与脚本所在目录相关的修补程序,可以使用

我有一个perl脚本

#!/usr/bin/perl
use strict;
use lib 'lib';
use SOME_MOD;
这在我的旧服务器上运行。 在新服务器上,它只适用于绝对路径,如

#!/usr/bin/perl
use strict;
use lib '/var/www/apps/myapp/lib';
use SOME_MOD;

我错过了什么?

@INC
中的目录总是相对于当前工作目录,但是一些web服务器将cwd设置为
/
。如果需要与脚本所在目录相关的修补程序,可以使用

use FindBin qw( $RealBin );
use lib "$RealBin/lib";
或者,由于要添加的目录是
$RealBin/lib
$RealBin//lib
,因此可以使用


@INC
中的目录始终与当前工作目录相对,但某些web服务器将cwd设置为
/
。如果需要与脚本所在目录相关的修补程序,可以使用

use FindBin qw( $RealBin );
use lib "$RealBin/lib";
或者,由于要添加的目录是
$RealBin/lib
$RealBin//lib
,因此可以使用


mod_perl的cwd与脚本位置不同。
相对路径解析在Web服务器配置Perl CGI脚本支持时起作用。

mod_Perl的cwd与脚本位置不同。
当Webserver配置了Perl CGI脚本支持时,相对路径解析可以工作。

您所说的“它只工作”是什么意思?它如何不使用相对路径?显示错误、输出(或说输出丢失)等。脚本位于/var/www/apps/myapp/,lib位于/var/www/apps/myapp/lib/lib不在@INC中,在新服务器和旧服务器上相同。错误日志:无法在@INC中找到MOD_MAIN.pm。您知道您在两个示例中使用了两个不同的模块,对吗
SOME_MOD
MOD_MAIN
?启动脚本时,您的工作目录是什么?您所说的“它只工作”是什么意思?它如何不使用相对路径?显示错误、输出(或说输出丢失)等。脚本位于/var/www/apps/myapp/,lib位于/var/www/apps/myapp/lib/lib不在@INC中,在新服务器和旧服务器上相同。错误日志:无法在@INC中找到MOD_MAIN.pm。您知道您在两个示例中使用了两个不同的模块,对吗
一些MOD
MOD\u MAIN
?启动脚本时,您的工作目录是什么?@ikegami
一些web服务器将cwd设置为/
我可以在哪里更改它?可能是这样的:MOD\u perl的cwd与脚本位置不同。MOD\u perl在Apache进程中嵌入了一个perl解释器。是的,Apache+mod_perl进程的cwd可能是
/
@ikegami
一些web服务器将cwd设置为/
,我可以在哪里更改它?可能是这样的:mod_perl的cwd与脚本位置不同。mod_perl在Apache进程中嵌入了一个perl解释器。是的,Apache+mod_perl进程的cwd可以是
/