Прототип или Object.prototype - это свойство литерала объекта. Он представляет объект прототипа Object , который вы можете переопределить, чтобы добавить дополнительные свойства или методы дальше по цепочке прототипов.
__ proto__ является свойством accessor (функция get и set), которая предоставляет внутренний прототип объекта, к которому он обращается.
Ссылки:
С помощью метода выше (с участием sftp) вы можете использовать stream_copy_to_stream :
$resFile = fopen("ssh2.sftp://{$resSFTP}/".$csv_filename, 'w');
$srcFile = fopen("/home/myusername/".$csv_filename, 'r');
$writtenBytes = stream_copy_to_stream($srcFile, $resFile);
fclose($resFile);
fclose($srcFile);
Вы также можете попробовать использовать ssh2_scp_send
Для меня это сработало:
$connection = ssh2_connect($server, $serverPort);
if(ssh2_auth_password($connection, $serverUser, $serverPassword)){
echo "connected\n";
ssh2_scp_send($connection, "/path/to/local/".$file, "/path/to/remote/".$file);
echo "done\n";
} else {
echo "connection failed\n";
}
Сначала мне нужно было установить libssh2-php:
sudo apt-get install libssh2-php
sudo apt-get install php-ssh2
вместо
– omega1
16 February 2018 в 14:35
Лично я предпочитаю избегать расширения PECL SSH2. Мой предпочтительный подход включает phpseclib, чистую реализацию PHP SFTP . например,
<?php
include('Net/SFTP.php');
$sftp = new Net_SFTP('www.domain.tld');
if (!$sftp->login('username', 'password')) {
exit('Login Failed');
}
$sftp->put('remote.ext', 'local.ext', NET_SFTP_LOCAL_FILE);
?>
. Одна из больших вещей, которые мне нравятся в phpseclib над расширением PECL, заключается в том, что она переносима. Возможно, расширение PECL работает с одной версией Linux, но не с другим. И на общих хоста он почти никогда не работает, потому что он почти никогда не установлен.
phpseclib также, на удивление, быстрее . И если вам нужно подтвердить, что загруженный файл вы можете использовать встроенный протокол phpseclib в качестве доказательства.
Разделяя дополнительные входы, найденный ssh2_scp_send не копировался должным образом (байты были разными), когда копирование файла из Linux (64-разрядного) в Windows (32 бит), там работала sftp. При использовании Windows с stfp путь в случае C: \ to \ path должен быть помещен как ssh2.sftp: // {$ resSFTP} / cygdrive / c / to / path, если Cygwin используется для SSH в окне Windows .
Для простого документа phpseclib, чистой реализации PHP SFTP.
См. следующую ссылку:
Загрузка файлов через SFTP с использованием PHP
Структура папок:
Main Folder->
my-files(Contain File Which Transfer To Remote Server)
phpseclib0.3.0
sftp.php