Pdf IIS上的ImageMagic权限被拒绝
我在Windows Server 2012 R2上安装了带有GhostScript的ImageMagick-6.9.2-8-Q16-x64-dll.exePdf IIS上的ImageMagic权限被拒绝,pdf,permissions,imagemagick,ghostscript,windows-server-2012-r2,Pdf,Permissions,Imagemagick,Ghostscript,Windows Server 2012 R2,我在Windows Server 2012 R2上安装了带有GhostScript的ImageMagick-6.9.2-8-Q16-x64-dll.exe 使用shell_exec或exec从PHP执行convert“document.pdf”“thumbnail.jpg”命令行失败,返回值为1。如果我在命令提示符(cmd.exe)中手动运行相同的命令,它会无缝地创建pdf文件 在阅读了许多文章和论坛之后,以下是我在IIS环境中使用ImageMagic的步骤 临时目录权限: 每当PHP将文件上载
使用shell_exec或exec从PHP执行
convert“document.pdf”“thumbnail.jpg”
命令行失败,返回值为1。如果我在命令提示符(cmd.exe)中手动运行相同的命令,它会无缝地创建pdf文件 在阅读了许多文章和论坛之后,以下是我在IIS环境中使用ImageMagic的步骤
C:\Windows\Temp
目录,并将其移动到目标目录。在此过程中,上载的文件将从临时目录获得固有的所有权和权限。默认情况下,此继承将阻止ImageMagic访问它。为克服此限制,IUSR
和IIS\u USRS
需要对临时目录具有读/写权限。
有关详细说明,请阅读此cmd.exe
的权限。这是非常不鼓励的,因为它可能会为安全漏洞创建一个窗口李>
IUSR
和IIS\u IUSR
读/写权限C:\Inetpub\vhosts\…
,不如传递为C:\\Inetpub\\vhosts\\…
。
下面是一个工作片段的示例:$cmd='convert“C:\\Inetpub\\vhosts\\a\\doc.pdf[0]”“C:\\Inetpub\\vhosts\\b\\thumb\\a.jpg”代码>
$output=”“代码>
$result=exec($cmd,$output)代码>
print\r($output)//变量转储(输出)代码>
请注意,整个命令用单引号括起来,源文件和目标文件用双引号括起来
调试:
PHP不会报告在执行命令行期间可能发生的任何错误。如果遇到错误,它将以静默方式失败。要调试从命令行发送的输出,建议使用它。此函数允许您传递一个输出变量,该变量将由包含命令行响应的数组填充。在这里,您可以使用var_dump、print_r来显示输出。如果此值的值为1或4,则表示您仍然存在必须解决的权限问题:(
希望这会有所帮助。我们在ASP.NET应用程序中发现了相同的问题。我们通过确保已正确处理ImageMagick对象来解决它
注意:我们使用语句将ImageMagick对象包装在里面。它不起作用。
我们已经明确地关闭了那个物体