PHP exec() 命令不工作
PHP exec() command not working
经过数小时的尝试和寻找答案后,我无法让它工作。
托管详细信息:
Windows 服务器 2012 R2
Plesk 12
IIS 8.5
问题
我的问题是:
我想在 PHP 中执行这个命令。在使用 PHP 脚本创建新用户后,该命令对于重新加载 filezilla 的配置是必需的。
C:\Program Files (x86)\FileZilla Server\FileZilla Server.exe /reload-config
当我直接在 CMD 中尝试时它确实有效。
但是在 PHP 中 if 不知何故不起作用。我尝试了很多东西,所以我会尝试把我尝试过的所有礼仪都给你。
我尝试通过以下方式做到这一点:
试验 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(唯一 returns 错误!)
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. )
特权:
几乎所有的遮阳篷都发现他们谈论的是特权。我做了以下特权:
将所有网络用户和 IUSR 权限授予 CMD.exe 和 FileZilla Server.exe,
并尝试将 IIS 身份验证从匿名设置为管理员帐户
有人说要试试这个:
echo '<pre>';
system('set', $retval);
echo ' </pre>';
如果我这样做,我的输出是:http://pastebin.com/SjzeQpJ0
如果你们想要更多详情,请询问。我希望你们能帮我解决这个问题。我试图尽可能清楚。谢谢。
终于找到解决办法了!!
如果你遇到和我一样的问题,而你不知道如何解决这个问题,请按照以下步骤操作。
- 登录到您服务器的远程(如果您有权访问它)打开
- 打开 IIS 管理器
- Select -> 机器节点下的应用程序池节点(左面板)
- 右键单击所需的域名 -> 高级设置
- 滚动到流程模型 -> Id
- 点击 3 个点
- 选中“自定义帐户”单选按钮
- 填写一个可以访问的现有管理帐户
远程桌面,当然还有它的密码
- 按确定
- 现在转到 .exe 或任何您想通过
执行命令和
- 右键单击文件和select属性
- 转到安全选项卡
- Select 编辑
- 现在您可以完全使用您之前 select 注册的帐户。如果它是
未列出而不是通过单击添加手动添加
如果您已完成所有这些操作,现在应该可以使用了。
终于找到解决方法了!!
如果您遇到与我相同的问题,并且不知道如何解决,请按照以下步骤操作。
- 登录到您服务器的远程服务器(如果您有权访问它)
- 打开 IIS 管理器
- Select -> 机器节点下的应用程序池节点(左面板)
- 右键单击所需的域名 -> 高级设置
- 滚动到流程模型 -> 身份
- 点击 3 个点
- 选中“自定义帐户”单选按钮
- 填写一个可以访问的现有管理帐户
远程桌面,当然还有它的密码
- 按确定
- 现在转到 .exe 或任何您想通过
执行命令和
- 右键单击文件和select属性
- 转到安全选项卡
- Select 编辑
- 现在您可以完全使用您之前 select 编辑过的帐户。如果它是
未列出而不是通过单击添加手动添加
如果您已完成所有这些操作,现在应该可以使用了。
我通过使用上面的内容并探索了一些,找到了一种更安全的方法来做到这一点。您需要做的就是启用 "Load User Profile" 然后它将拥有普通用户分配的所有普通用户权限。只是让它像这样工作而不是授予管理权限:
- 登录到您服务器的远程(如果您有权访问它)
- 打开 IIS 管理器
- Select -> 机器节点下方的应用程序池节点(左面板)
- 右键单击所需的域名 -> 高级设置
- 滚动到流程模型 -> Id
- 设置加载用户配置文件 = True
正在工作!特别固定 Windows 2012 R2
- 转到 IIS
- 单击应用程序池
- Select 应用程序池 -> 高级设置
- 在弹出窗口下 -> 流程模型 -> 将加载用户配置文件设置为 TRUE
- 然后 -> 进程模型 -> 标识 -> 本地系统
- 这将充当当前用户
注意:如果当前对系统有高权限,这将是高风险的。
经过数小时的尝试和寻找答案后,我无法让它工作。
托管详细信息:
Windows 服务器 2012 R2
Plesk 12
IIS 8.5
问题
我的问题是: 我想在 PHP 中执行这个命令。在使用 PHP 脚本创建新用户后,该命令对于重新加载 filezilla 的配置是必需的。
C:\Program Files (x86)\FileZilla Server\FileZilla Server.exe /reload-config
当我直接在 CMD 中尝试时它确实有效。 但是在 PHP 中 if 不知何故不起作用。我尝试了很多东西,所以我会尝试把我尝试过的所有礼仪都给你。
我尝试通过以下方式做到这一点:
试验 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(唯一 returns 错误!)
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. )
特权:
几乎所有的遮阳篷都发现他们谈论的是特权。我做了以下特权:
将所有网络用户和 IUSR 权限授予 CMD.exe 和 FileZilla Server.exe, 并尝试将 IIS 身份验证从匿名设置为管理员帐户
有人说要试试这个:
echo '<pre>';
system('set', $retval);
echo ' </pre>';
如果我这样做,我的输出是:http://pastebin.com/SjzeQpJ0
如果你们想要更多详情,请询问。我希望你们能帮我解决这个问题。我试图尽可能清楚。谢谢。
终于找到解决办法了!!
如果你遇到和我一样的问题,而你不知道如何解决这个问题,请按照以下步骤操作。
- 登录到您服务器的远程(如果您有权访问它)打开
- 打开 IIS 管理器
- Select -> 机器节点下的应用程序池节点(左面板)
- 右键单击所需的域名 -> 高级设置
- 滚动到流程模型 -> Id
- 点击 3 个点
- 选中“自定义帐户”单选按钮
- 填写一个可以访问的现有管理帐户 远程桌面,当然还有它的密码
- 按确定
- 现在转到 .exe 或任何您想通过 执行命令和
- 右键单击文件和select属性
- 转到安全选项卡
- Select 编辑
- 现在您可以完全使用您之前 select 注册的帐户。如果它是 未列出而不是通过单击添加手动添加
如果您已完成所有这些操作,现在应该可以使用了。
终于找到解决方法了!!
如果您遇到与我相同的问题,并且不知道如何解决,请按照以下步骤操作。
- 登录到您服务器的远程服务器(如果您有权访问它)
- 打开 IIS 管理器
- Select -> 机器节点下的应用程序池节点(左面板)
- 右键单击所需的域名 -> 高级设置
- 滚动到流程模型 -> 身份
- 点击 3 个点
- 选中“自定义帐户”单选按钮
- 填写一个可以访问的现有管理帐户 远程桌面,当然还有它的密码
- 按确定
- 现在转到 .exe 或任何您想通过 执行命令和
- 右键单击文件和select属性
- 转到安全选项卡
- Select 编辑
- 现在您可以完全使用您之前 select 编辑过的帐户。如果它是 未列出而不是通过单击添加手动添加
如果您已完成所有这些操作,现在应该可以使用了。
我通过使用上面的内容并探索了一些,找到了一种更安全的方法来做到这一点。您需要做的就是启用 "Load User Profile" 然后它将拥有普通用户分配的所有普通用户权限。只是让它像这样工作而不是授予管理权限:
- 登录到您服务器的远程(如果您有权访问它)
- 打开 IIS 管理器
- Select -> 机器节点下方的应用程序池节点(左面板)
- 右键单击所需的域名 -> 高级设置
- 滚动到流程模型 -> Id
- 设置加载用户配置文件 = True
正在工作!特别固定 Windows 2012 R2
- 转到 IIS
- 单击应用程序池
- Select 应用程序池 -> 高级设置
- 在弹出窗口下 -> 流程模型 -> 将加载用户配置文件设置为 TRUE
- 然后 -> 进程模型 -> 标识 -> 本地系统
- 这将充当当前用户
注意:如果当前对系统有高权限,这将是高风险的。