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.
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"; }
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');
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');
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!