phpseclib3 SFTP 脚本在本地工作但在 cPanel 上不工作

问题描述

我想使用 PHP 7.2 和 PHPseclib3 从 SFTP 服务器下载文件。问题是我写了一个在本地运行良好的脚本并下载了文件,但是当我在 cPanel 上上传代码时它不起作用。

我的脚本 (main.PHP)

<?PHP
require 'vendor/autoload.PHP';
use PHPseclib3\Net\SFTP;

$sftp = new SFTP('170.135.187.17');
if (!$sftp->login('username','password')) {
    exit('Login Failed');
}
$sftp->get('/Download/Inherent.40IW.IW_DailyNAV.csv','Inherent.40IW.IW_DailyNAV.csv');
?>

我正在使用作曲家。为了在 cPanel 服务器上运行它,我将所有文件复制到 public_html 文件夹。然后我从 cPanel 打开终端并导航到 public_html 并运行 composer install,然后运行 ​​PHP main.PHP 以在服务器上测试脚本。

但我得到 Login Failed 没有任何错误

我的尝试

我搜了一下,发现共享主机需要绑定socket。

所以我把代码改成这样:

<?PHP
require 'vendor/autoload.PHP';

use PHPseclib3\Net\SFTP;


$opts = array(
    'socket' => array(
        'bindto' => '127.255.255.255:0',),);
$context = stream_context_create($opts);
$socket = stream_socket_client('170.135.187.17:22',$errno,$errstr,ini_get('default_socket_timeout'),STREAM_CLIENT_CONNECT,$context);

$sftp = new SFTP($socket);
if (!$sftp->login('username','Inherent.40IW.IW_DailyNAV.csv');
?>

上面的代码可以在本地运行,但是当我将其上传到 cPanel 时仍然无法运行。

我也尝试使用 $sftp->getSFTPErrors() 记录错误,但它输出空数组。

不是:如果有人有另一种从 sftp 下载文件方法,请提出建议。请记住,我在 cPanel 中没有 sudo 访问权限。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...