Я ничего не делал на машине с Windows с тех пор, как начал серьезно заниматься системным администрированием и разработкой (все * nix). Так что я могу спросить что-то легкое, но я не нашел ответа путем поиска.
У меня Windows Server 2008 с Apache 2.2. Я могу запустить perl-скрипт "printenv.pl", который находится в каталоге cgi-bin вместе с установкой Apache, просто отлично ...
Однако со сценарием, который выполняет следующие действия:
#!c:\perl\bin\perl.exe
print "Content-Type: text/plain; charset=iso-8859-1\n\n";
print `type C:\\Some\\Dir\\file.txt`;
В моем журнале apache просто говорится:
[Tue Jun 22 13:13:55 2010] [error] [client 68.230.22.34] Access is denied.\r
Я могу запустить тот же сценарий perl из командной строки, так что я знаю, что он работает для моего пользователя. В диспетчере задач я вижу, что httpd.exe работает с пользователем SYSTEM, поэтому я убедился, что файл file.txt доступен для чтения для SYSTEM. В какой-то момент я даже сделал его доступным для чтения всем - но все равно получаю ошибку «доступ запрещен».
Спасибо...
Вы уверены, что пользователь SYSTEM может выполнить perl.exe?
Что ж - оказалось, что C:\some\dir\file.txt
файл был зашифрован. Это заняло у меня некоторое время, но я, наконец, начал задаваться вопросом: «Почему эта папка с зеленым текстом» в проводнике Windows. Понятия не имею, почему, но я скопировал zip-файл, и когда они распаковали, они были зашифрованы. Как только я выключил это, скрипт perl мог читать.