The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]




Версия для распечатки Пред. тема | След. тема
Новые ответы [ Отслеживать ]
Apache не запускает cgi скрипты, !*! Gekt0r, 16-Апр-07, 12:40  [смотреть все]
Всем привет, я копаюсь с apache и cgi программированием, на перле.
Возник ламерский вопрос, на который, однако, я не нашел ответа в сети: у меня не запускаются мои cgi приложения. Так, к примеру, в моем файле index.html создаю форму, которая отсылает данные скрипту в этом же каталоге. Захожу через браузер, заполняю форму, жму enter, и на экране появляется мой cgi скрипт, в текстовом виде. То есть браузер просто его выводит на экран, а не запускает.

И еще вопрос. Я пробовал размещать скрипты в каталоге cgi-bin, но в браузере вываливается ошибка 404 Not Found. В файле httpd.conf есть строка ScriptAlias /cgi/bin "usr/local/www/apache22/cgi-bin". В логах сервера появляется запись:


Loading CGI at runtime. You could increase shared memory between prosesses by preloading it in your httpd.conf or handler.pl file
[Mason] Cannot resolve file to component: /usr/local/www/apache22/cgi-bin/printenv (is file outside component root?) at /usr/local/lib/perl5/site_perl/5.8.8/HTML/Mason/Apachehandler.pm line 853


  • Apache не запускает cgi скрипты, !*! A, 12:46 , 16-Апр-07 (1)
    • Apache не запускает cgi скрипты, !*! Gekt0r, 12:57 , 16-Апр-07 (2)
      >Видимо надо написать не
      >ScriptAlias /cgi/bin "usr/local/www/apache22/cgi-bin

      >ScriptAlias /cgi-bin /usr/local/www/apache22/cgi-bin
      >а лучшe
      >ScriptAlias /cgi-bin/ /usr/local/www/apache22/cgi-bin/


      подправил, ничего не изменилось. При попытке обратиться в браузере к каталогу /cgi-bin/ напрямую, выскакивает ошибка forbidden, хоть право доступа на чтение я выставил. При попытке доступа к cgi-bin/printenv - not found

      • Apache не запускает cgi скрипты, !*! A, 13:06 , 16-Апр-07 (3)
        • Apache не запускает cgi скрипты, !*! Gekt0r, 13:20 , 16-Апр-07 (4)
          >>>Видимо надо написать не
          >>>ScriptAlias /cgi/bin "usr/local/www/apache22/cgi-bin
          >>>а
          >>>ScriptAlias /cgi-bin /usr/local/www/apache22/cgi-bin
          >>>а лучшe
          >>>ScriptAlias /cgi-bin/ /usr/local/www/apache22/cgi-bin/
          >>
          >>
          >>подправил, ничего не изменилось. При попытке обратиться в браузере к каталогу /cgi-bin/
          >>напрямую, выскакивает ошибка forbidden, хоть право доступа на чтение я выставил.
          >>При попытке доступа к cgi-bin/printenv - not found
          >
          >forbidden -- это правильно
          >а not found это и значит нот фаунд: либо скрипт лежит не
          >в /usr/local/www/apache22/cgi-bin/, либо разывается иначе. вы уверены, что он называется cgi-bin/printenv?
          >может cgi-bin/printenv.cgi?

          Абсоютно точно - printenv. Из командной строки запускается нормально. Повторюсь, в error-логах сервера при попытке доступа к нему появляется запись:
          Loading CGI at runtime. You could increase shared memory between prosesses by preloading it in your httpd.conf or handler.pl file
          [Mason] Cannot resolve file to component: /usr/local/www/apache22/cgi-bin/printenv (is file outside component root?) at /usr/local/lib/perl5/site_perl/5.8.8/HTML/Mason/Apachehandler.pm line 853

          • Apache не запускает cgi скрипты, !*! exn, 17:00 , 16-Апр-07 (5)
          • Apache не запускает cgi скрипты, !*! A, 17:30 , 16-Апр-07 (6)
            • Apache не запускает cgi скрипты, !*! Gekt0r, 19:00 , 16-Апр-07 (7)
              >>>>>Видимо надо написать не
              >>>>>ScriptAlias /cgi/bin "usr/local/www/apache22/cgi-bin
              >>>>>а
              >>>>>ScriptAlias /cgi-bin /usr/local/www/apache22/cgi-bin
              >>>>>а лучшe
              >>>>>ScriptAlias /cgi-bin/ /usr/local/www/apache22/cgi-bin/
              >>>>
              >>>>
              >>>>подправил, ничего не изменилось. При попытке обратиться в браузере к каталогу /cgi-bin/
              >>>>напрямую, выскакивает ошибка forbidden, хоть право доступа на чтение я выставил.
              >>>>При попытке доступа к cgi-bin/printenv - not found
              >>>
              >>>forbidden -- это правильно
              >>>а not found это и значит нот фаунд: либо скрипт лежит не
              >>>в /usr/local/www/apache22/cgi-bin/, либо разывается иначе. вы уверены, что он называется cgi-bin/printenv?
              >>>может cgi-bin/printenv.cgi?
              >>
              >>Абсоютно точно - printenv. Из командной строки запускается нормально. Повторюсь, в error-логах
              >>сервера при попытке доступа к нему появляется запись:
              >>Loading CGI at runtime. You could increase shared memory between prosesses by
              >>preloading it in your httpd.conf or handler.pl file
              >>[Mason] Cannot resolve file to component: /usr/local/www/apache22/cgi-bin/printenv (is file outside component root?)
              >>at /usr/local/lib/perl5/site_perl/5.8.8/HTML/Mason/Apachehandler.pm line 853
              >
              >Так у вас там Mason? можут у вас ещё и mod_perl включен?
              >вы уж рассказывайте доконца :-)

              Да, у меня Apache с mod_perl и HTML::Mason.
              Вот весь рассказ)

  • Apache не запускает cgi скрипты, !*! Gekt0r, 13:30 , 24-Апр-07 (9)
    >Всем привет, я копаюсь с apache и cgi программированием, на перле.
    >Возник ламерский вопрос, на который, однако, я не нашел ответа в сети:
    >у меня не запускаются мои cgi приложения. Так, к примеру, в
    >моем файле index.html создаю форму, которая отсылает данные скрипту в этом
    >же каталоге. Захожу через браузер, заполняю форму, жму enter, и на
    >экране появляется мой cgi скрипт, в текстовом виде. То есть браузер
    >просто его выводит на экран, а не запускает.
    >
    >И еще вопрос. Я пробовал размещать скрипты в каталоге cgi-bin, но в
    >браузере вываливается ошибка 404 Not Found. В файле httpd.conf есть строка
    >ScriptAlias /cgi/bin "usr/local/www/apache22/cgi-bin". В логах сервера появляется запись:
    >
    >
    >Loading CGI at runtime. You could increase shared memory between prosesses by
    >preloading it in your httpd.conf or handler.pl file
    >[Mason] Cannot resolve file to component: /usr/local/www/apache22/cgi-bin/printenv (is file outside component root?)
    >at /usr/local/lib/perl5/site_perl/5.8.8/HTML/Mason/Apachehandler.pm line 853


    Отчасти я разобрался. С ошибкой 404. Проблема была в том, что не был указан ComponentRoot для Mason, соответственно, файлы в каталоге cgi-bin были за пределами корневой директории, и Mason их не видел. Я добавил в httpd.conf строку
    PerlAddVar MasonCompRoot "main => /usr/local/www/apache22"
    Теперь директория с cgi-bin видна через браузер.

    Однако скрипты все равно не запускаются((((
    Просто в браузере выводится текст скрипта.
    Я добавил в httpd.conf строки
    AddHandler cgi-script .cgi .pl
    <Directory "/usr/local/www/apache22/cgi-bin".
    Options ExecCGI
    </Directory>

    Но это не помогло.
    Как заставить apache выполнять cgi?




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру