Lighttpd на Cygwin имеет переменную PATH, отличную от оболочки Cygwin - PullRequest
0 голосов
/ 22 апреля 2011

Я запускаю Lighttpd на Cygwin. У меня есть Lua CGI-скрипт, который вызывает BASH-скрипт, который вызывает notepad.exe. Моя настоящая проблема - запуск приложения на C #, но я попытался упростить проблему с помощью блокнота.

Когда я вызываю веб-страницу CGI, я получаю сообщение об ошибке: notepad.exe: команда не найдена Но когда я запускаю BASH из оболочки Cygwin, блокнот работает без ошибок.

Похоже, что путь очищается, когда работает lighttpd. Как мне убедиться, что среда одинакова?

CGI (LUA):

#!/usr/bin/lua

cmd = "/opt/abc/scripts/test.sh"
local f = io.popen( cmd.." ; echo RC=$?" )
assert(f)  
local str = f:read'*a'
f:close()

print ("Content-type: Text/html\n")
print ("<br><b>Output</b>: ", str)
print ("</body></html>")

BASH:

#!/bin/sh

echo "Test.sh" 
echo "<br>PATH<br> $PATH<hr>"

notepad.exe 2>&1

Ответы [ 2 ]

0 голосов
/ 17 мая 2011

Lighttpd запускался планировщиком задач Windows при запуске системы и не требовал входа пользователя. Это означало, что сервер запускался в окне «Сессия 0», которое помечено как неинтерактивное. Подробнее о сеансах Windows

Мое решение состояло в том, чтобы выбросить простой командный файл в папку автозагрузки, которая запустит lighttpd. В качестве альтернативы я мог бы создать службу cygwin, которая будет автоматически запускаться и обеспечивать установку флажка взаимодействия с рабочим столом.

0 голосов
/ 22 апреля 2011

Вы пробовали вызывать с bash -l?также - что не так с установкой пути в вашем скрипте?

(нет машины cygwin, удобной для тестирования)

...