在execshell_exec中的PSCP PHP

问题描述 投票:0回答:1

我想用SFTP通信方式将文件从一个服务器发送到另一个服务器。

SO服务器 从:Windows服务器 Windows ServerSO服务器发往: 我不知道 :(

要做到这一点,我只需要运行:

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

情况下,工作正常。

  1. 在Windows中的CMD中运行这个命令。
  2. 把这个命令放在PHP文件的exec函数中,然后用cmd;Conde在PHP文件中调用这个PHP文件。
<?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);

但是,如果我从我的前台,使用ajax调用同一个PHP文件,它不工作。

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

php NAME_MY_FILE.php

非常感谢大家!

php ajax exec sftp shell-exec
1个回答
1
投票

问题解决了。

当我用windows的CMD运行de php时,一切都很正常,因为CMD使用管理员用户运行命令。当我在网站上调用它时,PHP使用系统用户运行exec,而系统用户没有运行PSCP命令的权限。

当我给PHP服务权限以管理员身份运行时,执行就可以了。

© www.soinside.com 2019 - 2024. All rights reserved.