Назад | Перейти на главную страницу

Apache не может найти файл для cgi

Проблема:

Apache2 отказывается запускать мои сценарии CGI, говоря мне, что не может найти файл.

Образец журнала:

[Wed Jul 14 09:22:19 2010] [error] [client 192.168.111.1] (2)No such file or directory: exec of '/home/pnathan/public_html/ajax.pl' failed
[Wed Jul 14 09:22:19 2010] [error] [client 192.168.111.1] Premature end of script headers: ajax.pl

Точки:

ajax.pl - это chmod 755. Дерево каталогов, в котором он находится, - это chmod 755. У меня есть другой сценарий в том же каталоге, который выполняется.

LS из ajax.pl:

-rwxr-xr-x 1 pnathan pnathan 534 2010-07-14 09:12 ajax.pl

В моем конфигурационном файле Apache2 есть этот блок:

   <Directory /home/pnathan/public_html>
      Options Indexes FollowSymLinks MultiViews
      AllowOverride None
      Order allow,deny
      allow from all
      Options +ExecCGI
      AddHandler cgi-script .pl .py
   </Directory>

Понятия не имею, что происходит.

Я предполагаю, что первая строка вашего скрипта содержит имя интерпретатора, которого нет на вашем компьютере.

Теперь разница может быть столь же тонкой, как тот факт, что если вы переместили сценарий с машины Windows на машину UNIX, строка оканчивается символом ^ M.

Я предлагаю открыть файл в vi и посмотреть, не написано ли что-то вроде «[dos]» внизу экрана. Если это так, то мое предположение верное.

Самый простой способ исправить это - dos2unix.