繁体   English   中英

PHP exec() 命令不起作用

[英]PHP exec() command not working

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

托管详情:

视窗服务器 2012 R2

Plesk 12

IIS 8.5

问题

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

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

当我直接在 CMD 中尝试时它确实有效。 但是在 PHP 中如果不以某种方式工作。 我尝试了很多事情,我将尝试给你我尝试过的所有礼貌。

我尝试通过以下方式做到这一点:

试验 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. 选择 -> 机器节点下方的应用程序池节点(左面板)
  4. 右键单击所需的域名 -> 高级设置
  5. 滚动到流程模型 -> Id
  6. 单击 3 个点
  7. 检查自定义帐户单选按钮
  8. 填写可以访问远程桌面的现有管理帐户,当然还有它的密码
  9. 按确定
  10. 现在转到 .exe 或您想通过 exec 命令访问的任何文件,然后
  11. 右键单击文件并选择属性
  12. 转到安全选项卡
  13. 选择编辑
  14. 现在拥有您之前选择的帐户的全部权利。 如果未列出,则单击“添加”手动添加

如果你已经完成了所有这些,它现在应该可以工作了。

终于找到解决办法了!!


如果您遇到和我一样的问题,并且不知道如何解决,请按照以下步骤操作。
  1. 登录到您服务器的远程(如果您有权访问它)
  2. 打开 IIS 管理器
  3. 选择 -> 机器节点下方的应用程序池节点(左面板)
  4. 右键单击所需的域名 -> 高级设置
  5. 滚动到流程模型 -> 身份
  6. 单击 3 个点
  7. 检查自定义帐户单选按钮
  8. 填写可以访问远程桌面的现有管理帐户,当然还有它的密码
  9. 按确定
  10. 现在转到 .exe 或您想通过 exec 命令访问的任何文件,然后
  11. 右键单击文件并选择属性
  12. 转到安全选项卡
  13. 选择编辑
  14. 现在拥有您之前选择的帐户的全部权利。 如果未列出,则单击“添加”手动添加

如果你已经完成了所有这些,它现在应该可以工作了。

通过使用上述方法并探索一些方法,我发现了一种更安全的方法来做到这一点。 您需要做的就是启用“加载用户配置文件”,然后它将拥有普通用户分配的所有普通用户权限。 只是让它像这样工作,而不是授予管理访问权限:

  1. 登录到您服务器的远程(如果您有权访问它)
  2. 打开 IIS 管理器
  3. 选择 -> 机器节点下方的应用程序池节点(左面板)
  4. 右键单击所需的域名 -> 高级设置
  5. 滚动到流程模型 -> Id
  6. 设置加载用户配置文件 = True

和工作! 专门修复了 Windows 2012 R2

  1. 进入 IIS
  2. 单击应用程序池
  3. 选择应用程序池 ->高级设置
  4. 在 Popup -> Process Model -> 将 Load User Profile 设置为TRUE
  5. 和 -> 流程模型 -> 身份 ->本地系统
  6. 这将充当当前用户

注意:如果当前对系统有高权限,这将是高风险。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM