PHPseclib STFP检查目录存在

时间:2014-03-19 09:54:08

标签: php codeigniter phpseclib

我的模型中有以下功能:

    public function createfolder($location, $name){
        define('NET_SFTP_LOGGING', NET_SFTP_LOG_COMPLEX);
        $sftp = new Net_SFTP('xx.xxx.xx.xx');
        if (!$sftp->login('admin', '********')) {
            exit('Login Failed');
        }
        //moves to a location (Job folder for example)
        $sftp->chdir($location);
        //makes the folder
        $sftp->mkdir($name);
    }

这会有效,但我想添加某种错误预防验证,如何使用SFTP检查文件夹是否存在?


想想我想出了一个解决方案:

“chdir()更改目录,mkdir()创建目录,rmdir()删除目录。如果失败,它们都返回false.chdir(),mkdir()和rmdir()返回成功完成操作后为true。“

所以我可以使用if语句检查chdir()===是或否,以查看目录是否存在。

2 个答案:

答案 0 :(得分:1)

我认为您的解决方案很好。

从理论上讲,你也可以做$sftp->stat('filename')['permissions'] & 0170000 == 0040000这样的事情。这是从phpseclib本身借来的黑客:

https://github.com/phpseclib/phpseclib/blob/7a2c7a414c08d28f0700c7f6f8686a9e0e246a44/phpseclib/Net/SFTP.php#L1969

答案 1 :(得分:0)

您可以使用$sftp->is_dir($location)检查它是否是目录。