Windows-Server-2008

讀取文件時 Windows/Apache/Perl/CGI “訪問被拒絕”

  • June 24, 2010

自從我開始認真從事系統管理和開發工作(所有 *nix)以來,我還沒有在 Windows 機器上做過任何事情。所以我可能會問一些簡單的問題 - 但我沒有通過搜尋找到答案。

我有執行 Apache 2.2 的 Windows Server 2008。我可以執行 cgi-bin 目錄中的“printenv.pl”perl 腳本以及 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

我可以從 dos 提示符執行相同的 perl 腳本——所以我知道它適用於我的使用者。我可以在任務管理器中看到 httpd.exe 正在使用使用者 SYSTEM 執行,所以我確保 file.txt 對 SYSTEM 是可讀的。我什至在某一時刻使它對所有人都可讀-但我仍然收到“訪問被拒絕”錯誤。

謝謝…

好吧 - 原來C:\some\dir\file.txt文件被加密了。我花了一段時間,但我終於開始懷疑:“為什麼那個文件夾是綠色文本”在 Windows 資源管理器中。我不知道為什麼,但我複制了一個 zip 文件,當他們提取它們時,它們被加密了。一旦我關閉它,perl 腳本就可以讀取。

你確定使用者’SYSTEM’可以執行perl.exe嗎?

引用自:https://serverfault.com/questions/153792