2014-03-26 48 views
0

我試圖讓經典的asp/vbscript運行較少的編譯器(https://github.com/duncansmart/less.js-windows)。從服務器上的真實cmd提示符運行確切的命令可以正常工作。所以它將成爲那些允許類型的東西之一。我的服務器是Win2003 x86/IIS6。從經典的asp/vbscript編譯爲css較少

<% 
' foo.asp 

outpath = "c:\inetpub\wwwroot\site\less" 
cmd = "c:\less.js-windows-v1.6.2\lessc.cmd" 
Set Shell = server.createobject("WScript.Shell") 
nodeCommand = cmd & " " & outPath & "\app.less " & outPath & "\app.css" 
errCode = Shell.Run(nodeCommand, 0, True) 
' errcode = 1 

%> 

foo.asp匿名運行在Web服務器上的某個地方。

cmd.exe已添加了iusr_server以便它具有讀取和執行權限。

c:\less.js-windows-v1.6.2已經有iusr_server添加了讀取/執行以及。

我已授予everyone許可修改c:\inetpub\wwwroot\site\less一側的文件,以確保它不是允許的東西。

我試着修改我的命令,在命令文件名之前加上CMD /C

+0

嘗試將您的代碼放入VBS文件並在您的Web服務器上運行,以排除與代碼相關的任何內容。 – Bond

+0

你可能會發現這有幫助[如何從ASP執行DOS命令/批處理文件/ exe?](http://classicasp.aspfaq.com/general/how-do-i-execute-a-dos-command/批處理文件/ exe-from-asp.html) – Lankymart

+0

@Lankymart:我已經嘗試了幾乎所有的東西。我知道這是許可相關的。這似乎是我正在運行'.cmd'文件而不是exe或bat。 @Bond:這在IIS以外很好。它必須是與權限相關的,但我已授予cmd.exe的IUSR exe權限,以及較少的應用程序和正在寫入的位置。 – frumbert

回答

0

使用以下過程:

  • 停止服務器的所有文件
  • 更改爲完整路徑相對路徑
  • 重新配置IUSR是你
  • 重新啓動服務器
+0

它們已經是完整的路徑,包括正在執行的cmd文件中的引用。我想我可以將IUSR配置爲我,因爲腳本以交互方式運行(ps,您鏈接到ios7的doco,而不是iis6)。解決方案似乎是創建一個新的用戶與這些項目的套件,並用它來代替匿名用戶...看起來像一個kludge,但這又是IIS。 – frumbert