我最近安装了 phpseclib 并尝试将简单的 CSV 文件上传到远程 SFTP 服务器,但没有成功。
本地文件在根目录,远程路径也是到根目录。
任何建议都会很棒。
use phpseclib3\Net\SFTP;
$sftp = new SFTP('IP');
if (!$sftp->login('sftp_user', 'sftp_pass')) {
exit('Login Failed');
}
$localCsvFile = 'filename.csv';
$remoteCsvFile = '/';
if ($sftp->put($remoteCsvFile, $localCsvFile, SFTP::SOURCE_LOCAL_FILE)) {
echo 'File uploaded successfully.';
} else {
echo 'File upload failed.';
}
$sftp->disconnect();
你说“本地文件在根目录”——根是什么?服务器?包含特定项目的目录?您的用户的主目录? PHP 不会假设其中任何一个。
通常,最好始终对本地文件使用绝对路径,因为相对路径并不总是与您期望的相对路径。因此,您应该引用“/home/simon/my-project/uploads/filename.csv”之类的内容,而不是“filename.csv”
您可以使用神奇常量
__DIR__
来引用您编写的任何 PHP 脚本的目录,然后使用“/../”作为“父级”,例如$file = __DIR__ . '/example.txt';