【问题标题】:PSCP in exec/shell_exec PHPexec/shell_exec PHP 中的 PSCP
【发布时间】:2020-06-10 13:44:48
【问题描述】:

我正在尝试使用 SFTP 通信将文件从一台服务器发送到另一台服务器。

SO 服务器来自:Windows 服务器 SO Server To: 我不知道 :(

为此,我只需要运行:

pscp -i "MY_SSH_KEY.ppk"  MY_FILE USER_FTP@URL_SERVER_TO_SEND:/PATH/TO/SEND

工作正常的情况:

  1. 在 windows 中通过 CMD 运行此命令;
  2. 将此命令放入PHP文件中的exec函数中,并使用cmd调用此PHP文件; PHP 文件中的 Conde:
<?php
$command = 'pscp -i "MY_SSH_KEY.ppk"  MY_FILE USER_FTP@URL_SERVER_TO_SEND:/PATH/TO/SEND && echo success || echo error';
$result = "";

exec($command,$result);
echo json_encode($result,JSON_PRETTY_PRINT);

但是,如果我从前面调用同一个 PHP 文件,使用 ajax,它就不起作用。

注意:要从 cmd 调用这个 PHP 文件,我使用这个命令:

php NAME_MY_FILE.php

非常感谢各位!

【问题讨论】:

  • 可能需要完整路径来处理一件或多件事情c:\path\to\pscp,也可能需要ppk
  • “它不起作用” 请edit您的问题描述运行代码时具体发生的情况。您收到错误消息吗?他们说什么?
  • 不要使用 pscp,而是使用 PHP SSH 库,例如 phpseclib 或 PHP SSH2 模块。

标签: php ajax exec sftp shell-exec


【解决方案1】:

问题解决了,

当我使用 Windows 的 CMD 运行 de php 时,一切正常,因为 CMD 使用管理员用户运行命令。当我通过网站调用它时,PHP使用无权运行PSCP命令的系统用户运行exec。

当我授予 PHP 服务以管理员身份运行的权限时,执行工作。

【讨论】:

    猜你喜欢
    • 2011-10-28
    • 1970-01-01
    • 2010-11-09
    • 1970-01-01
    • 1970-01-01
    • 2013-03-24
    • 1970-01-01
    • 2012-06-05
    相关资源
    最近更新 更多