странная ошибка CGI - PullRequest
       23

странная ошибка CGI

0 голосов
/ 13 июня 2010

У меня есть скрипт cgi, работающий на моем локальном хосте (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

На моем локальном хосте мне не нужно ничего делать, чтобы работать, но на производстве я должен добавить это в свой apache conf:

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

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

AddHandler cgi-script .cgi .pl

= (спасибо.

Ответы [ 3 ]

1 голос
/ 03 апреля 2011

Попробуйте установить ia32-libs.У меня была такая же проблема, потому что моя Ubuntu является 64-битной версией, а kcc скомпилирован для 32-битного использования.

0 голосов
/ 16 октября 2013

Прежде всего я хотел бы остановиться на причине, почему cgi работает локально, а не на сервере, как вы заявляете:

У меня есть скрипт cgi, работающий на моем локальном хосте (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, И они ломаются, если не загружены в двоичном режиме, так как имеют некоторые странные символы, которые удаляются или изменяются при загрузкеЛюбым другим путем.Вы можете использовать Filezilla и изменить режим передачи на двоичный.

Надеюсь, это поможет вам и всем, кто борется с трансбанком ... это действительно боль ...

РЕДАКТИРОВАТЬ:

Просто понял, что это 2-летний вопрос ... ну ... все же.Вокруг этой конкретной темы так мало информации, что я все равно оставлю ее здесь: D

0 голосов
/ 16 сентября 2012

Хм, у меня была такая же проблема, я исправил загрузку * .cgi в двоичном режиме с

...