91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

php如何實現sftp上傳

發布時間:2021-09-14 11:29:11 來源:億速云 閱讀:124 作者:chen 欄目:編程語言

這篇文章主要講解了“php如何實現sftp上傳”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“php如何實現sftp上傳”吧!

本文操作環境:windows7系統、PHP7.1版,DELL G3電腦

php怎么實現sftp上傳?

php 實現SFTP上傳文件

php 實現sftp文件上傳完全可以用php.net 官網中的方式,代碼如下:

class SFTPConnection
{
    private $connection;
    private $sftp;

    public function __construct($host, $port=22)
    {
        $this->connection = @ssh3_connect($host, $port);
        if (! $this->connection)
            throw new Exception("Could not connect to $host on port $port.");
    }

    public function login($username, $password)
    {
        if (! @ssh3_auth_password($this->connection, $username, $password))
            throw new Exception("Could not authenticate with username $username " .
                                "and password $password.");

        $this->sftp = @ssh3_sftp($this->connection);
        if (! $this->sftp)
            throw new Exception("Could not initialize SFTP subsystem.");
    }

    public function uploadFile($local_file, $remote_file)
    {
        $sftp = $this->sftp;
        $stream = @fopen("ssh3.sftp://$sftp$remote_file", 'w');

        if (! $stream)
            throw new Exception("Could not open file: $remote_file");

        $data_to_send = @file_get_contents($local_file);
        if ($data_to_send === false)
            throw new Exception("Could not open local file: $local_file.");

        if (@fwrite($stream, $data_to_send) === false)
            throw new Exception("Could not send data from file: $local_file.");

        @fclose($stream);
    }
}

try
{
    $sftp = new SFTPConnection("localhost", 22);
    $sftp->login("username", "password");
    $sftp->uploadFile("/tmp/to_be_sent", "/tmp/to_be_received");
}
catch (Exception $e)
{
    echo $e->getMessage() . "\n";
}

但是在進行中遇到了一個問題, 我的php版本是 PHP 5.6.31 (cli) (built: Aug  2 2017 15:05:23)  , 在執行

$stream = @fopen("ssh3.sftp://$sftp$remote_file", 'w');

fopen的時候 執行文件 會報 "Segmentation fault" 的錯誤, 然后變成以下方式便可以解決

$stream = @fopen("ssh3.sftp://" . intval($sftp) . $remote_file, 'w');

其中,在實現sftp上傳的時候,沒有在意上傳文件和上傳目錄的區別(例如: /upload 和 /upload/test.txt 的問題), 導致每次執行php 都會報 fopen(): Unable to open ssh3.sftp://5/upload on remote host. 問題解決方法就是 認真, 大寫的認真

以上就是php做的, 只要登錄sftp服務器 進行查看便知道結果.

sftp 命令登錄方式:

sftp -oPort=port  user@server 然后輸入密碼, 進去之后可以到相對的目錄查看文件是否存在.

感謝各位的閱讀,以上就是“php如何實現sftp上傳”的內容了,經過本文的學習后,相信大家對php如何實現sftp上傳這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

php
AI

阿荣旗| 连江县| 武夷山市| 兴城市| 金堂县| 微博| 山西省| 涡阳县| 衡东县| 稻城县| 博兴县| 长丰县| 杭锦旗| 武威市| 临朐县| 海丰县| 福州市| 会理县| 乐亭县| 临泉县| 镇安县| 万荣县| 临武县| 于田县| 阿荣旗| 石城县| 曲阜市| 德江县| 贞丰县| 城固县| 雷山县| 崇左市| 沙坪坝区| 清镇市| 西乡县| 铜梁县| 广南县| 武穴市| 株洲县| 邳州市| 大洼县|