【问题标题】:Using PHP to set up SSH connection and SFTP使用 PHP 设置 SSH 连接和 SFTP
【发布时间】:2016-02-08 10:44:24
【问题描述】:

我正在尝试建立一个ssh 连接,然后建立一个sftp 连接以通过 FTP 将文件传输到我的服务器。我之前用过FileZilla上传文件成功过。

这些是我的登录终端命令和 FileZilla 登录信息:

ssh b0xxxxx@linux7.aa.bb.cc.dd
Host: sftp://linux7.aa.bb.cc.dd
Username: b0xx
Port: 22

这是我的php 代码:

<?php
    $ftp_server = "b0xx@linux7.aa.bb.cc.dd";
    $ftp_port = 22; 
    $ftp_user = "b0xx";
    $ftp_pass = "##";
    $connection = ssh2_connect($ftp_server, $ftp_port);
    echo "Successful!\n";
    if (ssh2_auth_password($connection, $ftp_user, $ftp_pass)) {
      echo "Successful\n";
    } else {
      die ('Failed...');
    }
    $sftp = ssh2_sftp($connection);
    ssh2_scp_send($connection, '/local/filename', '/remote/filename', 0644);

?>

问题 1:我可以只使用ftp 函数从我的服务器上传/下载文件吗? 还是我必须设置ssh

问题2:当我执行代码时,网站只显示

Internal Server Error
The server encountered an internal error or misconfiguration and was unable to complete your request.

这意味着代码没有成功执行connection。有谁知道这个bug的原因吗?

非常感谢您的帮助。

【问题讨论】:

  • 你检查过php错误日志文件中的相关信息吗?

标签: php ssh ftp sftp


【解决方案1】:

似乎没有安装 SSH2 PECL 扩展。安装扩展,然后尝试您的代码。

【讨论】:

    【解决方案2】:
    $ftp_server = "b0xx@linux7.aa.bb.cc.dd";
    

    "b0xx@linux7.aa.bb.cc.dd" 不是主机名。主机名中不能有“@”。这可能是一个“username@hostname”字符串,但ssh_connect() 不接受这种形式的字符串。

    删除用户名部分:

    $ftp_server = "linux7.aa.bb.cc.dd";
    

    【讨论】:

      猜你喜欢
      • 2017-05-25
      • 2012-08-28
      • 2015-03-31
      • 2020-10-28
      • 2015-12-17
      • 2020-07-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多