如何使用phpseclib通过SFTP检查上传的文件是否存在

如何使用phpseclib通过SFTP检查上传的文件是否存在,php,file-upload,sftp,phpseclib,file-exists,Php,File Upload,Sftp,Phpseclib,File Exists,我正在使用phpseclib将文件上载到远程服务器。以前,我的脚本工作得很好,但我希望它能够检查远程服务器是否接收到该文件。例如,如果文件存在,则返回1/true;如果文件不存在,则返回0/false 我的代码: include('Net/SFTP.php'); $path = "upload/"; $path_dir .= $ref .".xml"; $directory = '/home/XML/'; $directory .= $ref .".xml"; $sftp = new

我正在使用phpseclib将文件上载到远程服务器。以前,我的脚本工作得很好,但我希望它能够检查远程服务器是否接收到该文件。例如,如果文件存在,则返回1/true;如果文件不存在,则返回0/false

我的代码:

include('Net/SFTP.php');

$path = "upload/";
$path_dir .=   $ref .".xml";
$directory = '/home/XML/';
$directory .=   $ref .".xml";

$sftp = new Net_SFTP('xxx.com',22);
if (!$sftp->login('username', 'password'))
{
    exit('SFTP Login Failed');
}
echo $sftp->pwd();

$sftp->put($directory, $path_dir, NET_SFTP_LOCAL_FILE);

if (!$sftp->get($directory))
{
    echo "0";
}
文件上传成功,但不知道如何检查文件是否存在


是否有人对此故障排除有任何想法或建议?

您可以使用
文件\u exists
方法:

if ($sftp->file_exists($directory))
{
    echo "File exists";
}
if ($sftp->stat($directory))
{
    echo "File exists";
}
(这里,
$directory
变量名非常混乱。它是指向文件的路径,而不是目录。)

虽然测试
put
方法的结果就足够了。实际上并不需要额外的检查


文件\u存在
方法仅在phpseclib 0.3.7之后可用。如果您使用的是较旧版本的phpseclib,请使用
stat
方法:

if ($sftp->file_exists($directory))
{
    echo "File exists";
}
if ($sftp->stat($directory))
{
    echo "File exists";
}

file\u exists
内部调用
stat

您也可以使用
$sftp->file\u exists($directory)

您可以使用
$sftp->rawlist($dir)
数组键\u exists
,或者只使用
stat($file)
您能给我一些例子吗?脚本挂起了我的服务器。很多感谢信,不是为我工作。不确定文件_是否存在sftp是否有文件_存在,因为我在sftp示例中找不到它:但stat($directory)正在正常工作您提供的链接的第2250行: