首页 > 解决方案 > 如果 CGI 脚本以 #!/usr/bin/env perl 开头,则 HTTP 错误 404(未找到)

问题描述

我有一个内容不重要的 CGI 脚本。从网络执行时它工作正常,但前提是第一行是

#!/usr/bin/perl -w

如果我将其更改为

#!/usr/bin/env perl

...然后我收到 HTTP 错误 404(未找到)。

从控制台执行时,脚本在这两种情况下都能正常工作。怎么了?


编辑

我通过在脚本开头添加以下行解决了我的问题:

#!/usr/bin/env perl

use lib '/usr/local/lib64/perl5';
use lib '/usr/local/share/perl5';
use lib '/usr/lib64/perl5/vendor_perl';
use lib '/usr/share/perl5/vendor_perl';
use lib '/usr/share/perl5';
use lib '/root/perl5/lib/perl5';

显然路径存在一些问题,我不明白为什么,因为当我从控制台执行脚本时,即使不使用use lib.

标签: perl

解决方案


我认为这些问题之间没有任何关系,或者解决方案实际上可以解决任何问题。如果 Apache 找不到脚本,它仍然无法通过添加库路径来找到它。另一方面,如果运行脚本有任何问题,服务器将返回 500 状态,而不是 404。在任何情况下,最好检查日志以找出确切的问题。


推荐阅读