Каталог проверки PHPseclib STFP существует

У меня есть следующая функция в моей модели:

    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() === истинным или ложным, чтобы увидеть, существует ли каталог.


person Sam    schedule 19.03.2014    source источник


Ответы (2)


Вы можете использовать $sftp->is_dir($location), чтобы проверить, является ли это каталогом.

person ownking    schedule 17.08.2017

Я думаю, что ваше решение является хорошим.

Теоретически вы также можете сделать что-то вроде $sftp->stat('filename')['permissions'] & 0170000 == 0040000, я думаю. Это хак, заимствованный из самого phpseclib:

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

person neubert    schedule 25.03.2014