При подключении к sftp по sftp user@serveripaddress
я проверял список файлов по ls
, но в удаленном каталоге это ничего не показывает, также пробовал cd
но нет других путей, по которым я могу перейти.
Я попытался lls
, это показывает каталог для моего проекта.
попытался добавить каталог в удаленном режиме, mkdir test
но выдает ошибку:
Couldn't create directory: Permission denied
У меня есть файл, найденный в локальном каталоге в /backups/mall/20180524_mallproducts.csv
Итак, теперь я пытаюсь проверить загрузку файла в удаленный каталог с помощью команды, put backups/client/mall/20180522150444_mallproduct.csv /
это даст мне результат:
Uploading backups/client/mall/20180522150444_mallproduct.csv to /20180522150444_mallproduct.csv
remote open("/20180522150444_mallproduct.csv"): Permission denied
поэтому я использую chmod, но это дает мне ошибку, потому что удаленный каталог пуст (нет файлов или папок):
Couldn't setstat on "/": Permission denied
Что может быть не так? как я могу изменить разрешение в sftp?
В docker-compose.yml
это мой параметр для sftp,
sftp:
image: atmoz/sftp
restart: always
volumes:
- ./data/sftp:/home/foo/upload
ports:
- "2222:22"
command: sftp:pass:48
Я ожидал, что папка home
при доступе к SFTP, но каталог пуст.
Сначала я обращался к sudo docker-compose exec sftp bash
, в нем есть каталог /home/foo/upload
.
Но затем я sftp user@serveripaddress
, вот где я узнал, что мой код пытается загрузить здесь.
Это код для загрузки через sftp:
<?php
namespace Mall\Infra\Transfer;
use phpseclib\Net\SFTP;
class SftpPutTransfer
{
/**
* @var File $name
*/
public function put(string $remote, string $local)
{
$sftp = new SFTP('user', 22);
if (!$sftp->login('user', 'pass')) {
var_dump('failed');
} else {
var_dump('success');
var_dump($sftp->rawlist());
$sftp->put($remote, $local, SFTP::SOURCE_LOCAL_FILE);
}
}
}
Я запутался в том, что SFTP подключить и проверить.