Я пытаюсь запустить простой скрипт cgi, который находится на моем iMac (установленном Yosemite) с компьютера под управлением Windows 10.Запуск сценария CGI на Yosemite/Apache с другого компьютера
Вот say_test01 скрипта (обратите внимание, что я попытался с .cgi в конце, но это тоже не работает)
#!/bin/bash
echo -e "Content-type: text/html\n"
cat << junk
<html>
<head>
<title>
saying
</title>
</head>
<body>
junk
#-----------------------
osascript -e "set volume 8"
say -v Whisper This is just wrong!
osascript -e "set volume 4"
say -v Whisper This is OK!
#-----------------------
cat << junk
</body>
</html>
junk
На ИМАКЕ я бег Apache v2.4.16.
На iMac, с терминала, я могу ввести ./say_test01, и я слышу голос, произносящий фразу.
Опять же, на iMac, но из браузера, когда я ввожу localhost/cgi-bin/say_test01 все, что я вижу, это содержимое файла.
Насколько я понимаю, от чтения других потоков, это потому, что система не знает, какое приложение связано с этим файлом.
Когда я бегу из браузера на моем компьютере Win10 команду 192.168.1.55/cgi-bin/saysomething я либо увидеть содержимое файла отображается или я получаю сообщение об ошибке «Этот сайт не может быть достигнуто ».
Я ищу некоторую помощь в выяснить это ...
В httpd.conf вот некоторые выдержки:
Эти линии имеют «#» удалены:
LoadModule authz_host_module libexec/apache2/mod_authz_host.so
LoadModule authz_core_module libexec/apache2/mod_authz_core.so
LoadModule cgi_module libexec/apache2/mod_cgi.so
LoadModule userdir_module libexec/apache2/mod_userdir.so
LoadModule alias_module libexec/apache2/mod_alias.so
Вот Справочник раздел:
<Directory "/Library/WebServer/CGI-Executables">
AddHandler cgi-script .cgi
Options FollowSymLinks +ExecCGI
AllowOverride None
Require all granted
</Directory>
И наконец эта линия имеет '#' удален
Включить /private/etc/apache2/extra/httpd-userdir.conf
В файле HTTPD-userdir.conf , следующая строка имеет '#' удален
Включить /private/etc/apache2/users/*.conf
В /и т.д./apache2/пользователей каталог У меня есть файл Name.conf, который имеет следующий код
<Directory "/Users/Name/Sites/">
AllowOverride All
Options Indexes MultiViews FollowSymLinks
Require all granted
</Directory>
Я не прикасался файл виртуального хоста, потому что я не думаю, что (?) он применяется здесь.
Моя конечная цель - передать параметры с другого компьютера (малина pi), возможно, используя код python для скрипта cgi, чтобы iMac мог «сказать», что я хочу ... (например, сегодняшняя погода, свет только что включился ...и т. д.)
Любые предложения о том, как я могу заставить это работать?
Edit:
Используя предложение, глядя на журнал ошибок, я увидел, что мой httpd.conf была ошибка. Линия Опции FollowSymLinks + ExecCGI дал мне сообщение об ошибке, в котором говорилось, что мне нужно иметь «+» перед всеми параметрами или без параметров! Поэтому я изменил строку на Опции + FollowSymLinks + ExecCGI. Теперь он работает хорошо.
Теперь я отправляю сообщение http GET от своего ISY994i (контроллера Insteon) к малине pi3. На pi я установил HTTPServer, который ждет инструкции GET. После получения он запускает скрипт python на pi, который анализирует файл xml погоды (который я ранее создал для моего приложения iRule, используя wunderground.com в качестве источника) и извлекает прогноз погоды текущего дня, который является текстовым описательным абзацем; он затем переформатирует текстовый прогноз, чтобы iMac мог сказать это правильно; и, наконец, используя urllib2, он запускает iMac, чтобы «сказать» о погоде. Я все еще сталкиваюсь с проблемой на pi, устанавливая HTTPServer для автоматического запуска при перезагрузке, но он работает хорошо, когда я запускаю его вручную. Я открою новый вопрос, чтобы получить помощь в разрешении этого.
Интересно, что у меня было это несколько лет назад с более старой версией ОС и на том же iMac. Однако жесткий диск скончался, и я потерял большую часть настроек. Я также обновил ОС до Yosemite, который, похоже, обрабатывает вещи по-другому, чем OS, на котором я был ранее. Одним из элементов, в частности, является WebSharing. Я также понял, что мне не нужен .cgi, если скрипт находился в определенном каталоге, который для меня является/Library/WebServer/CGI-Executables! – Gary
Вам не нужно расширение .cgi, но для этого требуется другая конфигурация. С вашей конфигурацией это необходимо. Как я уже объяснил. Вы пытались добавить его обратно? – SuperDuperApps
Ok Я скопировал файл say_test01 и создал say_test01, cgi. Теперь ни один файл не работает из браузера на iMac! Я даже не вижу содержимое файла. Браузер просто, кажется, висит! Вот что я вижу с ls -l -rwxr-xr-x 1 Sarah wheel 429 13 декабря 14:28 say_test01 -rwxr-xr-x 1 Sarah wheel 429 13 декабря 16:33 say_test01. cgi – Gary