繁体   English   中英

IIS 8-尝试在PHP中使用exec运行命令时拒绝访问

[英]IIS 8 - Access is denied when try to run command with exec in PHP

尝试从PHP运行此命令时,显示此错误

Access is denied.

$ruta = "C:\OpenSSL-Win31\bin\openssl pkcs8 -inform DER -in Usuarios_XML/$rfc/$archivo.key -out Usuarios_XML/$rfc/$archivo.key.pem -passin pass:".$key;

$ejecuta = exec($ruta . ' 2>&1', $output);
print_r($output);

但是,当我在openssl控制台中直接从服务器运行它时,它可以工作。

我想我需要某种许可,但是我不知道在哪里进行更改,有些想法如何实现?

该服务器正在运行Windows Server 2012 ,希望您能为我提供帮助,谢谢。

这是一个非常复杂的问题。 到目前为止,据我了解,问题在于您的命令正在尝试访问文件系统,并且默认情况下不允许IIS访问文件系统。 它可以在命令提示符下运行,因为命令属性可以访问文件系统,但是当同一命令在PHP和WebServer(IIS)中运行时,它将被拒绝。

你可以尝试几件事,

  1. 浏览命令中使用的所有文件的安全属性(包括C:\\OpenSSL-Win31\\bin\\openssl.exe ),然后检查“ NETWORK USER是否具有访问权限,否则将其添加并授予完全访问权限。
    要检查right click on the file > properties > security tabright click on the file > properties > security tab

  2. 如果这样做没有帮助,请给IIS管理员访问权限。 请检查IIS:应用程序池标识以了解操作方法。 由于您授予管理员访问IIS的权限,因此它有遭受外部攻击的风险。 请对此进行更多研究,以便您了解自己在做什么。

就我而言,后一种解决方案有效,请告知我们是否有任何帮助。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM