Apache perl 脚本纯文本输出

Apache perl 脚本纯文本输出

有人能解释为什么我的 perl 脚本呈现为纯文本吗:

#!/usr/bin/perl
use FindBin;
BEGIN {
  lib->import($FindBin::Bin) unless $ENV{mod_perl}
}
require 'lsmb-request.pl';

我的目录指令如下:

Alias /ledgersmb /opt/ledgersmb/
<Directory /opt/ledgersmb>
  RewriteRule ^/ledgersmb/?$ /ledgersmb/login.pl [R]
  RewriteRule rest/(.*) /ledgersmb/rest-handler.pl/$1

  Options +ExecCGI +FollowSymLinks
  AllowOverride All
  AddHandler cgi-script .pl
  Require all granted
</Directory>

Apache 版本:

[dave@Threepwood opt]# sudo apachectl -v
Server version: Apache/2.4.23 (Unix)
Server built:   Jul  5 2016 07:34:37

权限:

[dave@Threepwood ~]$ ls -l /opt/ledgersmb/setup.pl 
-rwxr-xr-x 1 http dave 119 Aug 20 14:53 /opt/ledgersmb/setup.pl
[dave@Threepwood ~]$ ls -l /opt/ledgersmb/login.pl 
-rwxr-xr-x 1 http dave 119 Aug 20 14:53 /opt/ledgersmb/login.pl

谢谢!

答案1

当。。。的时候内容脚本被渲染为纯文本,而不是被执行的脚本,例如,当正确的CGI模块支持还未加载例如LoadModule cgi_module modules/mod_cgi.so

如果输出脚本的渲染为纯文本,这是脚本作者的失误。首要要求编写 CGI 脚本时:

CGI 程序的所有输出都必须以 MIME 类型标头开头。这是 HTTP 标头,用于告知客户端正在接收什么类型的内容。

如果没有(正确的)MIME 类型标头,浏览器将不得不猜测内容是什么。浏览器可能会默认尝试将您的输出显示为纯文本。

答案2

检查脚本是否可执行:

chmod +x path-to-script.pl

相关内容