Windows-Server-2008
讀取文件時 Windows/Apache/Perl/CGI “訪問被拒絕”
自從我開始認真從事系統管理和開發工作(所有 *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嗎?