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

如何解决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.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?
Java在半透明框架/面板/组件上重新绘画。
Java“ Class.forName()”和“ Class.forName()。newInstance()”之间有什么区别?
在此环境中不提供编译器。也许是在JRE而不是JDK上运行?
Java用相同的方法在一个类中实现两个接口。哪种接口方法被覆盖?
Java 什么是Runtime.getRuntime()。totalMemory()和freeMemory()?
java.library.path中的java.lang.UnsatisfiedLinkError否*****。dll
JavaFX“位置是必需的。” 即使在同一包装中
Java 导入两个具有相同名称的类。怎么处理?
Java 是否应该在HttpServletResponse.getOutputStream()/。getWriter()上调用.close()?
Java RegEx元字符(。)和普通点?