当前位置: 首页 > 知识库问答 >
问题:

500 内部伺服器错误,尝试在 Apache 2.4.6 Ubuntu 13.10 上运行 perl cgi 文件

戎鹏云
2023-03-14

嗨,因为关于这个话题的其他帖子对我没有多大帮助(它们似乎都不适用于我运行的Ubuntu版本Ubuntu 13.10),我决定再发一篇。运行这些线路后(一位stackoverflow成员建议运行这些线路)。。

cd /etc/apache2/mods-enabled 
sudo ln -s ../mods-available/cgi.load .
sudo ln -s ../mods-available/cgid.load .
sudo service apache2 restart

我将cgi文件(它们是perl文件)放在Apache2的cgi-bin@/usr/lib/cgi-bin中。键入localhost/cgi-bin/test时。cgi,我收到一个500内部服务器错误。这是服务器错误日志所说的。。

[Fri 2013年11月22日21:23:29.045785][CGI:error][PID 9559][客户端127 . 0 . 0 . 1:47663]ah 01215:(8)Exec格式错误:“/usr/lib/cgi-bin/test.cgi”的Exec失败[Fri 2013年11月22日21:23:29.046720][CGI:error][PID 9559][客户端127

test.cgi看起来像这样…

 #!/usr/bin/perl

 print "Content-type: text/html\n\n";
 print <<HTML;
 <html>
 <head>
 <title>A Simple Perl CGI</title>
 </head>
 <body>
 <h1>A Simple Perl CGI</h1>
 <p>Hello World</p>
 </body>
 HTML
 exit; 

有人知道当这种情况发生时该怎么办或者有什么建议吗?谢谢

编辑::很奇怪,我得到了这个cgi文件,我调用test2.cgi来运行。

    #!/usr/bin/perl

    use strict;
    use warnings;

    sub main {

        print "Content-type: text/html\n\n";

        print "Hello world\n\n";

        print "What's your favorite food brah?\n";

    }

    main();

但是我需要处理的更大、更高级的 cgi 文件将无法运行。这些包括用html标签打印出来的东西。

编辑:忽略代码中任何奇怪的空格。我就是这样把它复制到帖子里的。

共有1个答案

拓拔弘亮
2023-03-14

编辑:不太清楚原始代码中每行开头是否有多余的空格导致这个问题,如果没有,忽略其余部分!谢谢阿蒙

如果您尝试从控制台运行它们,它将有助于立即看到任何错误。既然这样...

Can't find string terminator "HTML" anywhere before EOF 

#!/usr/bin/perl    # make sure no space before # and this comment is not here

print "Content-type: text/html\n\n";
print <<HTML;
<html>
....
</body>
HTML 
exit; # Make sure the HTML line before this has nothing either side of it 

基本上,在#/Amon指出的usr/bin/perl行是否存在,结束的HTML行也应该修复它(不应该有任何围绕heredoc终止符的东西,这并不明显,每行开头都有空格,但有)。

有时当把示例代码放在一个站点上时,可能会引入空格等来帮助可视化。我猜这里引入了一些被复制到代码中的。很难发现!

 类似资料:
  • 请看下面的服务器日志摘录--我曾试图上传到谷歌,但失败了(500:内部服务器错误),然而,在查询谷歌驱动器盒上的相同文件,以前未能上传,谷歌返回该文件的元数据,从而确认该文件确实上传成功。 这似乎与Google的最佳实践相矛盾,后者建议在这种失败情况下重试--另一方面,重试将导致Google Drive中出现多个重复的文档。

  • 问题内容: 我正在尝试为这个工作中的项目学习AJAX。我有一个网站加载病人正在服用的药物。 我递归调用此AJAX函数,以便它将附加一个包含单种药物和7天历史记录的新表。我在使代码在FF和IE中执行时遇到问题。在chrome中效果很好。我有显示xmlhttp.status的警报,这是我得到的: xmlhttp.status == 500(内部服务器错误)。 我注释掉了所有递归,因此将其范围缩小到了这

  • 我收到以下错误 内部服务器错误 服务器遇到内部错误或配置错误,无法完成您的请求。 请联系服务器管理员,webmaster@strivemedicare.in并告知他们错误发生的时间,以及可能导致错误的任何行为。 有关此错误的详细信息,请参阅服务器错误日志。 此外,尝试使用错误文档处理请求时遇到 500 内部服务器错误错误。

  • 问题内容: 当使用Java的Youtube API示例将文件上传到youtube时,我得到以下信息: 在此行出现错误: 视频返回视频= videoInsert.execute(); 错误堆栈 这里已经引发了一个相关的问题: https : //code.google.com/p/gdata- issues/issues/detail?id=6352 问题答案: 一两天后自动解决!绝对是API问题。

  • 我一直试图在nginx上安装CakePHP,但我遇到了一个死胡同。尝试访问web根目录时,我收到一个500内部服务器错误。我在我的错误中得到了这个错误。日志: PHP消息:PHP致命错误:require():无法打开required'/var/www/html/test/vendor/autoload。php'(include_path='。:/usr/share/php:/usr/share/p

  • 我想用ajax向laravel中的控制器发送post请求。ajax请求发送两个输入参数,我希望controller在数据库中找到包含第一个参数的列,然后使用第二个输入参数设置name属性。但是我在控制台500中有这个错误消息(内部服务器错误)。 Ajax功能: 路线: 控制器功能: 而且我导入csrf无处不在,因为上次当我做AJAX调用我有这个csrf的问题,下面的代码已经修复了我的问题,但现在不