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

时间:2016-11-23 03:00:29

标签: php iis exec

尝试从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,我希望你能帮助我,谢谢。

1 个答案:

答案 0 :(得分:0)

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

你可以尝试一些事情,

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

  2. 如果这没有帮助,请授予IIS管理员访问权限。请检查IIS: Application Pool Identities以了解如何操作。 由于您授予IIS管理员访问权限,因此它具有外部攻击的风险。请仔细研究一下,这样你就应该知道自己在做什么了。

  3. 在我的情况下,后来的解决方案有效,请告诉我们是否有任何帮助。