PHP пытается загрузить файл через SFTP, но получает ошибку статистики при вычислении размера файла - PullRequest
2 голосов
/ 25 февраля 2020

Пытаюсь загрузить файлы из SFTP-местоположения.

Я использую intval в потоке, так как он предназначен для исправления ошибки, о которой я читал здесь: PHP 7 SSH2.SFTP stat () ошибка работает около . Я использую PHP 7.0.33.

Однако по команде filesize

$connection = ssh2_connect('remote.host', 22);

ssh2_auth_password($connection, 'user', 'pass');

$sftp = ssh2_sftp($connection);

$remoteDir = '/Data/';


$handle = opendir("ssh2.sftp://".intval($sftp)."$remoteDir"); //works with intval, fails without  

while (false !== ($entry = readdir($handle))){

        $local = fopen('localdata/'.$entry, 'w');

        $remote = fopen("ssh2.sftp://".intval($sftp)."$remoteDir$entry", 'r'); //works with intval, fails without

        $fileSize = filesize("ssh2.sftp://".intval($sftp)."$remoteDir$entry"); //fails with or without intval

        $buffer = fread($remote, $filesize - $read);

        fwrite($local, '$buffer');

}

она все еще не работает * Ошибка:

PHP Warning:  filesize(): stat failed for ssh2.sftp://5/ Data/remote_file.csv in /var/www/html/sftp_test.php on line 58
Segmentation fault

Я не понимаю, почему opendir и fopen работают, но filesize дает сбой. Любое руководство будет оценено.

Спасибо

ОБНОВЛЕНИЕ:

Я бросил пытаться заставить это работать. Я использую это вместо этого. Менее сложный, но он делает работу

copy("ssh2.sftp://".intval($sftp)."/{$remoteDir}{$file}", "localdata/$file");
...