代码之家  ›  专栏  ›  技术社区  ›  Drew

CFExecute不执行命令

  •  2
  • Drew  · 技术社区  · 16 年前
    <cfset LOCAL.cmd = expandPath('..\library\gm.exe') />
    <cfset LOCAL.args = "convert image1.jpg image2.jpg" />
    
    <cfexecute variable="gm" errorVariable="error"
     name="#LOCAL.cmd#" 
     timeout="10" 
     arguments="#local.args#" />
    
    <cfdump var="#gm#" />
    

    这段代码总是在gm中产生一个空字符串。无论我如何执行gm,无论是否带参数。其他示例工作正常,比如像CFDocs示例那样运行cmd.exe或netstat.exe。我没有在errorVariable中抛出错误或警告,它只是什么都不做。

    我修改了代码,此版本也不起作用:

    <cfset LOCAL.cmd = expandPath('..\library\gm.exe') />
    <cfset LOCAL.args = "convert ""#variables.uploadDirectory##LOCAL.file.source#"" ""#variables.uploadDirectory#optimal-#LOCAL.file.source#""" />
    <cfexecute  errorVariable="error"
        name="c:\windows\system32\cmd.exe" 
        timeout="10"
        outputFile="#expandPath('.\gm.log')#" 
        arguments="/C #local.cmd# #LOCAL.args#" />
    
    3 回复  |  直到 6 年前
        1
  •  4
  •   Community Mohan Dere    9 年前

    redirecting the error stream and adding an explicit terminate flag . 只是想看看你是否得到任何输出或看到不同的行为。早期版本没有捕获错误流,这导致一些进程挂起。它是在一个CF8更新程序中修复的。

    更新: 我刚注意到你的图像路径是相对的。也许程序很难找到它们。尝试对图像使用绝对路径。

    更新:

    <cfexecute variable="gm" 
        errorVariable="errorOut"
        name="C:\GraphicsMagick-1.3.12-Q16\gm.exe" 
        timeout="10" 
        arguments="convert c:\art.gif c:\artCopyFromCF9.gif" />
    
    <cfdump var="#variables#">  
    
        2
  •  1
  •   Ben Doom    16 年前

    在没有看到代码或服务器设置的情况下,我猜您需要检查CF运行的用户帐户的权限。

    如果CF是在默认用户下运行的,那么您可能需要创建一个用户,该用户可以访问您正在尝试执行的任何操作。然后将服务更改为在此用户下运行。或者,您可以为尝试访问的资源分配更自由的权限。

        3
  •  0
  •   cajahnke    10 年前

    推荐文章