Ao conectar-se ao sftp por sftp user@serveripaddress
, verifiquei a lista de arquivos em ls
, mas isso não mostra nada no diretório remoto, também tentei cd
, mas nenhum outro caminho para o qual eu possa me mover.
Eu tentei lls
, isso mostra o diretório do meu projeto.
tentou adicionar o diretório no remoto por, mkdir test
mas me dá erro:
Couldn't create directory: Permission denied
Eu encontrei o arquivo no diretório local em /backups/mall/20180524_mallproducts.csv
Então, agora estou tentando testar o upload do arquivo para o diretório remoto por comando,
put backups/client/mall/20180522150444_mallproduct.csv /
isso me dá resultado de:
Uploading backups/client/mall/20180522150444_mallproduct.csv to /20180522150444_mallproduct.csv
remote open("/20180522150444_mallproduct.csv"): Permission denied
então eu uso chmod, mas isso me dá um erro, porque o diretório remoto está vazio (sem arquivos ou pastas):
Couldn't setstat on "/": Permission denied
O que poderia estar errado? como posso alterar a permissão no sftp?
Em docker-compose.yml
, esta é a minha configuração para o sftp,
sftp:
image: atmoz/sftp
restart: always
volumes:
- ./data/sftp:/home/foo/upload
ports:
- "2222:22"
command: sftp:pass:48
Eu estava esperando a pasta home
ao acessar o SFTP, mas o diretório está vazio.
No começo eu estava acessando sudo docker-compose exec sftp bash
,
Tem o diretório /home/foo/upload
.
Mas então eu acesso por sftp user@serveripaddress
, que é onde eu descobri que meu código está tentando fazer o upload aqui.
Este é o código para upload via 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);
}
}
}
Estou confuso sobre qual SFTP conectar e testar.