Не может заставить SFTP работать в PHP

Как обсуждалось в ответе на на этот вопрос , распространенным методом является инициализация стека с известным значением, а затем некоторое время запускать код и смотреть, где останавливается паттерн.

17
задан hakre 30 May 2012 в 23:23
поделиться

3 ответа

У меня аналогичная проблема. Я предполагаю, что вы делаете что-то похожее на это:

    $dir = "ssh2.sftp://{$sftp}{$remote_dir}"; 
    $handle = opendir($dir);

Когда $ remote_dir - это полный путь от root, тогда open_dir работает. Если $ remote_dir - это просто «/» или «», то я получаю ошибку «невозможно открыть», как и вы.

В моем случае кажется, что ssh подключается к корневой папке, а не к 'домашний' каталог, как это делает ftp. Вы упомянули, что он работал на другом сервере, поэтому мне интересно, не проблема ли это просто конфигурации.

7
ответ дан 30 November 2019 в 10:02
поделиться

Недавно я попытался заставить SFTP работать на PHP и обнаружил, что использовать phpseclib намного проще:

http://phpseclib.sourceforge.net/

Если у вас есть роскошь не находиться на общем хосте и можно установить любые расширения, которые вы хотите, возможно, расширение PECL было бы лучше, но не всем из нас так повезло. Кроме того, API phpseclib выглядит более интуитивно понятным, поскольку он является ООП и всем остальным.

0
ответ дан 30 November 2019 в 10:02
поделиться

У меня была такая же проблема, но я мог решить проблему.

В моем случае при подключении к серверу я собирался в корень учетной записи, и из-за конфигураций сервера я не мог писать туда.

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

Мне пришлось указать весь путь до папки, в которой мне разрешено писать, и я мог решить проблему.

Итак, мой совет - получить путь с помощью графического интерфейса (я использовал fireFTP) и добавить весь путь к вашему коду.


$pathFromAccountRootFolderToMyDestinationFolder = '/Account/Root/Folder/To/My/Folder';
$stream = fopen("ssh2.sftp://".$sftp."/".$pathFromAccountRootFolderToMyDestinationFolder."/myFile.ext", 'r');

Надеюсь, это поможет вам и другим людям с той же проблемой!

Ура!

1
ответ дан 30 November 2019 в 10:02
поделиться
Другие вопросы по тегам:

Похожие вопросы: