尝试从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
,我希望你能帮助我,谢谢。
答案 0 :(得分:0)
这是一个非常复杂的问题。据我所知,到目前为止,问题是您的命令正在尝试访问文件系统,并且默认情况下不允许IIS访问文件系统。它可以在命令提示符下运行,因为命令propt可以访问文件系统但是当同一个命令运行在PHP和WebServer(IIS)时它会被拒绝。
你可以尝试一些事情,
浏览命令中使用的所有文件的安全属性(包括C:\OpenSSL-Win31\bin\openssl.exe
)并检查NETWORK USER
是否具有访问权限,否则添加它并提供完全访问权限。
>
要检查文件的secuirty:
right click on the file > properties > security tab
如果这没有帮助,请授予IIS管理员访问权限。请检查IIS: Application Pool Identities以了解如何操作。 由于您授予IIS管理员访问权限,因此它具有外部攻击的风险。请仔细研究一下,这样你就应该知道自己在做什么了。
在我的情况下,后来的解决方案有效,请告诉我们是否有任何帮助。