奇怪的CGI错误

时间:2010-06-13 14:33:54

标签: ubuntu cgi debian

我有一个cgi脚本在我的localhost(ubuntu 10.04)上运行,只需将它们放到/ usr / lib / cgi-bin

但......在生产中(ubuntu 10.04),它们从未运行过:

Apache error.log:

[Sun Jun 13 13:13:58 2010] [error] (2)No such file or directory: exec of '/var/www/cgi-bin/tbk_bp_resultado.cgi' failed
[Sun Jun 13 13:13:58 2010] [error] [client 190.161.196.57] Premature end of script headers: tbk_bp_resultado.cgi

我检查权限,似乎不是问题:

drwsrwsrwx 2 root root    4096 Jun 12 19:54 datos
-rwxrwxrwx 1 root root      76 Jun 13 02:13 erf.cgi
drwsrwsrwx 2 root root    4096 Oct  2  2008 log
drwsrwsrwx 2 root root    4096 Jun 12 19:54 maestros
-rwxrwxrwx 1 root root 1282027 Sep 16  2008 tbk_bp_pago.cgi
-rwxrwxrwx 1 root root 1280404 Sep 16  2008 tbk_bp_resultado.cgi
-rwxrwxrwx 1 root root 1275985 Sep 16  2008 tbk_check_mac.cgi
drwsrwsrwx 2 root root    4096 Jun 12 19:54 template

在我的localhost中,我不需要做任何事情来工作,但在生产中我必须在我的apache conf中添加它:

ScriptAlias /cgi-bin/ /var/www/cgi-bin/

<Directory /var/www/cgi-bin>
        Options +ExecCGI
</Directory>

AddHandler cgi-script .cgi .pl

=(谢谢。

3 个答案:

答案 0 :(得分:1)

尝试安装ia32-libs。我有同样的问题,因为我的ubuntu是一个64位版本,而kcc是为32位编译而编译的。

答案 1 :(得分:0)

嗯,我遇到了同样的问题,我用

修复了以二进制模式上传* .cgi的问题

答案 2 :(得分:0)

首先,我想解决cgi在本地运行而不是在服务器上运行的原因,如下所示:

  

我有一个cgi脚本在我的localhost(ubuntu 10.04)上运行,只需将它们放到/ usr / lib / cgi-bin

这里有一件你没看到的重要事情; Apache默认配置。如果您转到/etc/apache2/sites-enabled/000-default并查看其内容,您会看到以下内容:

ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
<Directory "/usr/lib/cgi-bin">
    AllowOverride None
    Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
    Order allow,deny
    Allow from all
</Directory>

与您在服务器上使用的其他路径/var/www/cgi-bin/

相同

如果你拿着你的cgi并将它们放在服务器上的/usr/lib/cgi-bin/内,他们将按照预期的方式开箱即用。

现在......至于错误,到目前为止user689374JosephCastro给出的答案都是正确的。 Transbank cgi脚本是32位应用程序,因此,在64位环境中运行时,它们需要ia32-libs,AND,如果没有以二进制模式上传它们会中断,因为它们有一些奇怪的字符被删除或更改如果上传任何其他方式。您可以使用Filezilla并将传输模式更改为二进制文件。

希望这可以帮助你和其他任何与transbank争吵的人...这真的很痛苦......

修改

刚刚意识到这是一个2岁的问题......好吧......还是。关于这个特定主题的信息很少,我将把它留在这里:D