更新:2013年12月7日
脚本通过命令行工作。
“------额外行”是在编辑器中显示额外的返回键击。
XAMPP:1.8.2
服务器:Apache 2.4
对于一个简单的hello world perl脚本,我一直收到错误“标题:hello.pl之前的脚本输出结束”。我正在尝试通过Web服务器“xampp”执行脚本。
我可以使用最初工作的另一个Perl脚本。但是,当我进行一个简单的更改,如空格,返回或注释“#”时,脚本将不再起作用。但是,如果我删除更改并保存它,脚本将再次起作用。
确认perl的正确路径 输出头(参见下面的perl代码) 脚本末尾的额外行(我听说这可以解决问题) 在httpd.config中确认了正确的权限 通过ftp以ASCII格式传输文件
Perl脚本:
#!"C:\xampp\perl\bin\perl.exe"
print "Content-Type: text/html\n\n";
print "hello world";
------extra line
<Directory "C:/xampp/htdocs">;
Options Indexes FollowSymLinks Includes ExecCGI
AllowOverride All
Require all granted
</Directory>;
答案 0 :(得分:1)
也许你的编辑器将行结束符改为windows 1。
CGI输出需要用HTTP ..,两个\ n然后标题启动,然后是正确HTML代码之间的正文(Why doesn't my Perl CGI program work on Windows?)
检查编辑器中的实际字符,显示行结尾(如记事本++)。
据我所知,在Windows中忽略了shebang(#!)行。
答案 1 :(得分:1)
可能的原因: http://perl.baczynski.com/wtf/solved-mystery-perl-on-xampp-wont-run-modified-scripts
tl; dr:关闭COMODO防病毒软件,或者它的沙箱功能。
答案 2 :(得分:0)
可能是已知的PHP错误(https://bugs.php.net/bug.php?id=66474)。尝试不同版本的PHP?
答案 3 :(得分:-1)
可能这是SELinux块。 试试这个
setsebool -P httpd_enable_cgi 1
chcon -R -t httpd_sys_script_exec_t cgi-bin/your_script.cgi