Rumah > pembangunan bahagian belakang > masalah PHP > Bagaimana untuk melaksanakan muat naik sftp dalam php

Bagaimana untuk melaksanakan muat naik sftp dalam php

藏色散人
Lepaskan: 2023-03-12 14:34:01
asal
2815 orang telah melayarinya

Cara melaksanakan muat naik sftp dalam PHP: 1. Cipta kod "kelas SFTPConnection private $connection...try{...}catch{...}" 2. Jalankan "sftp -oPort= penyataan pengguna port @server" sudah memadai.

Bagaimana untuk melaksanakan muat naik sftp dalam php

Persekitaran pengendalian artikel ini: sistem Windows 7, PHP versi 7.1, komputer DELL G3

Cara melaksanakan muat naik sftp dengan PHP?

php melaksanakan muat naik fail SFTP

php boleh melaksanakan muat naik fail sftp menggunakan kaedah di laman web rasmi php.net, kodnya adalah seperti berikut:

class SFTPConnection
{
    private $connection;
    private $sftp;

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

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

        $this->sftp = @ssh2_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("ssh2.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";
}
Salin selepas log masuk

Tetapi saya menghadapi masalah semasa proses php saya ialah PHP 5.6.31 (cli) (dibina: 2 Ogos 2017 15:05:23). 🎜>fopen Apabila melaksanakan fail, ralat "Segmentation fault" akan dilaporkan, dan kemudian kaedah berikut boleh digunakan untuk menyelesaikan masalah

$stream = @fopen("ssh2.sftp://$sftp$remote_file", 'w');
Salin selepas log masuk

Antaranya, apabila melaksanakan muat naik sftp, perbezaan antara fail yang dimuat naik dan direktori yang dimuat naik tidak diberi perhatian (contohnya : /upload dan /upload/test.txt), menyebabkan fopen(): Tidak dapat membuka ssh2.sftp://5/upload pada hos jauh untuk dilaporkan setiap kali php dilaksanakan. Penyelesaian kepada masalah adalah dengan

serius, Gunakan huruf besar dengan teliti
$stream = @fopen("ssh2.sftp://" . intval($sftp) . $remote_file, 'w');
Salin selepas log masuk

Di atas dilakukan oleh php, hanya log masuk ke pelayan sftp untuk menyemak dan anda akan tahu hasilnya .

kaedah log masuk arahan sftp:

sftp -oPort=port user@server dan kemudian masukkan kata laluan Selepas memasukkan, anda boleh pergi ke direktori relatif untuk menyemak sama ada fail itu wujud.

Pembelajaran yang disyorkan: "

Tutorial Video PHP

"

Atas ialah kandungan terperinci Bagaimana untuk melaksanakan muat naik sftp dalam php. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Label berkaitan:
php
sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan