[英]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)中运行时,它将被拒绝。
你可以尝试几件事,
浏览命令中使用的所有文件的安全属性(包括C:\\OpenSSL-Win31\\bin\\openssl.exe
),然后检查“ NETWORK USER
是否具有访问权限,否则将其添加并授予完全访问权限。
要检查right click on the file > properties > security tab
: right click on the file > properties > security tab
如果这样做没有帮助,请给IIS管理员访问权限。 请检查IIS:应用程序池标识以了解操作方法。 由于您授予管理员访问IIS的权限,因此它有遭受外部攻击的风险。 请对此进行更多研究,以便您了解自己在做什么。
就我而言,后一种解决方案有效,请告知我们是否有任何帮助。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.