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

Windows / Apache / Perl / CGI «доступ запрещен» при чтении файла

Я ничего не делал на машине с 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 мог читать.