द्वारा 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);
}
}
}
एसएफटीपी कनेक्ट करने और परीक्षण करने के लिए मैं उलझन में हूं।