द्वारा 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
homeSFTP एक्सेस करते समय मुझे फ़ोल्डर की उम्मीद थी , लेकिन निर्देशिका खाली है।
सबसे पहले मैं पहुँच रहा था 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);
}
}
}
एसएफटीपी कनेक्ट करने और परीक्षण करने के लिए मैं उलझन में हूं।