Может подключиться, но не может писать через SFTP - PullRequest
0 голосов
/ 19 февраля 2020

Я пытаюсь писать что-то через SFTP, и происходит что-то странное.

Вот примерный сценарий c:

<?php

$resConnection = ssh2_connect("<url>");

if (ssh2_auth_password($resConnection, "<name>", '<password>')){
    //Initialize SFTP subsystem
    echo "connected";

    $resSFTP = ssh2_sftp($resConnection);
    $resFile = fopen("ssh2.sftp://{$resSFTP}/"."test", 'w');
    fwrite($resFile, "Testing");
    fclose($resFile);
} else {
    echo "Unable to authenticate on server";
}

И вывод для него что-то вроде this:

root@0fb6a2a1af08:/var/www# php test.php
connected
Warning: fopen(ssh2.sftp://Resource id #5/test): failed to open stream: operation failed in /var/www/test.php on line 8

Warning: fwrite() expects parameter 1 to be resource, boolean given in /var/www/test.php on line 9

Warning: fclose() expects parameter 1 to be resource, boolean given in /var/www/test.php on line 10

Так что в основном он соединяется, но ничего не может написать. Тот же код с теми же учетными данными отлично работает на другой машине.

Возможно ли, что какая-то конкретная c конфигурация на стороне SFTP мешает мне писать?

1 Ответ

0 голосов
/ 19 февраля 2020

Хорошо, это связано с этими ошибками:

Решением на данный момент является использование intval вокруг строки ресурса, как сказано в документах: https://www.php.net/manual/ru/function.ssh2-sftp.php

$stream = fopen('ssh2.sftp://' . intval($sftp) . '/path/to/file', 'r'); 
...