PHP无法运行exec()

The basic setup I am trying to accomplish is using pdftk with PHP on IIS

I am trying to setup pdftk to run with PHP for processing on our internal server. I have tested that pdftk does work through command on the server but I cannot get it to run through php. I have tried changing from exec() to passthru(), system(), and shell_exec() just to be sure it wasn't specific.

The main solution I'm finding is saying that the IUSR account needs at least read & execute privileges on cmd.exe in the system32 folder. I have tried this and it did not change anything. I always get either "Unable to fork" or "Unable to execute" depending on which command I'm using.

展开翻译

译文

我想要完成的基本设置是在IIS上使用pdftk和PHP </ p>

我正在尝试设置pdftk以运行PHP以便在我们的内部服务器上进行处理。 我已经测试过pdftk在服务器上通过命令工作但我无法通过php运行它。 我尝试从 exec()</ code>更改为 passthru()</ code>, system()</ code>和 shell_exec()</ code> 确定它不具体。</ p>

我发现的主要解决方案是说IUSR帐户至少需要读取和读取。 对 system32 </ code>文件夹中的 cmd.exe </ code>执行权限。 我试过这个并没有改变任何东西。 我总是得到“无法分叉”或“无法执行”,具体取决于我正在使用的命令。</ p>
</ div>

php
duansaoguan7955
duansaoguan7955 是的,安全模式设置为关闭
大约 6 年之前 回复
duanruinong0619
duanruinong0619 嗨,PHP的safe_mode是关闭的?
大约 6 年之前 回复
duanjian4698
duanjian4698 再次检查其他问题。安全模式未启用。我也尝试启用对system32文件夹本身的读取和执行访问,但它没有任何区别。这通常是我们显然不会做的事情,但由于它是一台测试机,我们决定尝试一下。
大约 6 年之前 回复
douxi3233
douxi3233 我刚刚检查了php.ini,看起来没有为disable_functions设置任何内容。这条线很简单:disable_functions=
大约 6 年之前 回复
doubi5520
doubi5520 toolong
大约 6 年之前 回复
douganggu4392
douganggu4392 看看你做exec时会得到什么(“whoami”);
大约 6 年之前 回复
douqiang3768
douqiang3768 听起来像exec()可能运行得很好,但问题出现在cmd.exe/pdftk中。从PHP的角度来看,你能验证exec()运行良好吗?
大约 6 年之前 回复
douyongwan5946
douyongwan5946 您收到任何错误消息吗?另外,请确保您的php.ini文件中未禁用这些功能...
大约 6 年之前 回复

1个回答

I had this problem. It was caused by conflicting IIS settings in these 2 locations:

  • Application Pool > Advanced Settings > Process Model > Identity
  • Web site > Authentication > Anonymous Authentication

The app pool was set to a domain user. This was correct for how we needed to run our web site.

The web site authentication was set to the same "Specific user" as the application pool. It should have been set to "Application Pool Identity". After I changed it to "Application Pool Identity", exec() ran successfully.

展开翻译

译文



我遇到了这个问题。 这是由于这两个位置中的IIS设置冲突造成的:</ p>


  • 应用程序池&gt; 高级设置&gt; 过程模型&gt; 身份</ li>
  • 网站&gt; 身份验证&gt; 匿名身份验证</ li>
    </ ul>

    应用程序池已设置为域用户。 这对于我们如何运行我们的网站是正确的。 </ p>

    网站身份验证设置为与应用程序池相同的“特定用户”。 它应该已设置为“应用程序池标识”。 将其更改为“Application Pool Identity”后, exec()</ code>成功运行。</ p>
    </ div>

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问