我有一个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
=(谢谢。
答案 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/
内,他们将按照预期的方式开箱即用。
现在......至于错误,到目前为止user689374和JosephCastro给出的答案都是正确的。 Transbank cgi脚本是32位应用程序,因此,在64位环境中运行时,它们需要ia32-libs
,AND,如果没有以二进制模式上传它们会中断,因为它们有一些奇怪的字符被删除或更改如果上传任何其他方式。您可以使用Filezilla并将传输模式更改为二进制文件。
希望这可以帮助你和其他任何与transbank争吵的人...这真的很痛苦......
修改强>
刚刚意识到这是一个2岁的问题......好吧......还是。关于这个特定主题的信息很少,我将把它留在这里:D