PHP exec()命令无效

时间:2016-08-31 03:17:32

标签: php iis cmd exec

经过数小时和数小时的尝试并寻找答案,我无法让它发挥作用。

托管详情:

Windows Server 2012 R2

Plesk 12

IIS 8.5

问题

我的问题是: 我想在PHP中执行此命令。在使用PHP脚本创建新用户后,该命令对于重新加载filezilla的配置是必要的。

C:\Program Files (x86)\FileZilla Server\FileZilla Server.exe /reload-config

当我在CMD中直接尝试时,它确实有效。 但是在PHP中,如果doens以某种方式工作。我尝试了很多东西,我试图给你所有的尝试。

我尝试通过以下方式执行此操作:

试验1

$command = '"C:\\Program Files (x86)\\FileZilla Server\\FileZilla Server.exe" /reload-config'; 
exec( $command, $output, $return); 

print_r($output);
echo '<br/>' .$return;

输出:

Array ( ) 
0

试验2

$command = '"C:\\Program Files (x86)\\FileZilla Server\\FileZilla Server.exe" /reload-config'; 
system( $command, $output); 

print_r($output);

输出:0

试验3

$command = 'C:\\"Program Files (x86)\\FileZilla Server\\FileZilla Server.exe" /reload-config'; 
exec( $command, $output, $return); 

print_r($output);
echo '<br/>' .$return;

输出:0

试用版4(唯一一个返回错误!)

exec( 'C:\\"Program Files (x86)\\FileZilla Server\\FileZilla Server.exe" /stop 2>&1', $output); 
print_r($output);

输出:

Array ( [0] => Toegang geweigerd. )

英文:

Array ( [0] => Access denied. )

权限:

在所有的发烧友中,他们发现他们谈论的是特权。我做了以下特权:

将所有Web用户和IUSR权限授予CMD.exe和FileZilla Server.exe, 并尝试将IIS身份验证从匿名设置为管理员帐户

有人说试试这个:

echo '<pre>';
    system('set', $retval);
echo ' </pre>'; 

如果我这样做,我的输出是:http://pastebin.com/SjzeQpJ0

如果你们想要更多细节,请问。我希望你们能为我解决这个问题。我试着尽可能清楚。感谢。

最终找到了解决方案!!


如果您遇到与我相同的问题,并且您不知道如何解决此问题,请按照以下步骤操作。

  1. 登录服务器的远程(如果您有权访问它)打开
  2. 打开IIS管理器
  3. 选择 - &gt;机器节点(左侧面板)下面的“应用程序池”节点
  4. 右键单击所需的域名 - &gt;高级设置
  5. 滚动到流程模型 - &gt; ID
  6. 点击3点
  7. 检查自定义帐户单选按钮
  8. 填写有权访问的现有管理帐户 远程桌面,当然还有密码
  9. 按OK
  10. 现在转到.exe或您要访问的任何文件  exec命令和
  11. 右键单击该文件并选择属性
  12. 转到安全标签
  13. 选择修改
  14. 现在拥有您之前选择的帐户的全部权利。如果它是  没有列出,只需点击添加
  15. 即可手动添加

    如果您已完成所有这些操作,现在应该可以使用。

2 个答案:

答案 0 :(得分:0)

最终找到了解决方案!!


如果您遇到与我相同的问题,并且您不知道如何解决此问题,请按照以下步骤操作。

  1. 登录服务器的远程(如果您有权访问它)
  2. 打开IIS管理器
  3. 选择 - &gt;机器节点(左侧面板)下面的“应用程序池”节点
  4. 右键单击所需的域名 - &gt;高级设置
  5. 滚动到流程模型 - &gt; ID
  6. 点击3点
  7. 检查自定义帐户单选按钮
  8. 填写有权访问的现有管理帐户 远程桌面,当然还有密码
  9. 按OK
  10. 现在转到.exe或您要访问的任何文件  exec命令和
  11. 右键单击该文件并选择属性
  12. 转到安全标签
  13. 选择修改
  14. 现在拥有您之前选择的帐户的全部权利。如果它是  没有列出,只需点击添加
  15. 即可手动添加

    如果您已完成所有这些操作,现在应该可以使用。

答案 1 :(得分:0)

有一种更安全的方法可以做到这一点我通过使用上面的内容并探索了一些。您需要做的就是启用&#34;加载用户配置文件&#34;然后它将拥有普通用户分配的所有普通用户权限。让它像这样工作而不是提供管理访问权限:

  1. 登录服务器的远程(如果您有权访问它)
  2. 打开IIS管理器
  3. 选择 - &gt;机器节点(左侧面板)下面的“应用程序池”节点
  4. 右键单击所需的域名 - &gt;高级设置
  5. 滚动到流程模型 - &gt; ID
  6. 设置加载用户个人资料= True
  7. 工作!专门修复了Windows 2012 R2