ftp_site() No such file or directory

tarya

Новичок
Добрый день.

У себя в системе чтоб выставлять CHMOD не руками я написал метод который выставляет разрешения на директории. Сделал это через подключение через FTP. Используя функции которые предлагает мануал: ftp_connect, ftp_login, ftp_site.

На моем сервере где я все разрабатываю все работает без проблем, но когда перенес проект на хостинг клиента данная функция не заработала, пытался разобраться в чем дело но не было времени, и так как это было не критично выставил все руками и забыл. Потом еще один проект выложил недавно, и гляжу и у другого провайдера не работает. Я тут решил уже для себя разобраться в чем дело. Написал в саппорт, мол это так отключают из безопасности, но те сказали что все должно работать и найдите проблему и обращайтесь.

Я решил для себя написать для примера небольшую функцию и если что не так показать ее провайдеру.

Скрипт выдал "Could not change perms on /home/hoteltis/public_html/admin/inc/template/: No such file or directory". Я удивился, перепроверил пути, но ошибка говорить что директории нет. Тогда я взял еще функцию которая просто листает эту директории, по аналогии она не должна была мне показать содержимое директории, и сказать что директории попросту нет. Но она выдала что и положено содержимое директории которую я и хочу для теста изменить chmod.

Тогда и получается что у меня непонятная ошибка "Could not change perms on /home/hoteltis/public_html/admin/inc/template/: No such file or directory" при том что директория существует.

Прошу подсказать советом что это и как правильно поступить.


PHP:
<?
    ini_set('display_errors', 1);
    ini_set('display_startup_errors', 1);
    error_reporting(E_ALL);

    class Ftp{

        /**
         * @param $path
         * @param $xcite
         *
         * @return bool
         */
        public function ChangeMode($path, $xcite){
            $ftp_user_name = "login";
            $ftp_user_pass = "xxx";
            $ftp_server = "99.99.99.99";

            $conn_id = ftp_connect($ftp_server);

            if(ftp_login($conn_id, $ftp_user_name, $ftp_user_pass)) {

                ftp_pasv($conn_id, true);

                // try to chmod $path directory
                $command = "CHMOD 0". $xcite ." ".$path;
                echo "<br /><strong>Execute: ".$command."</strong><br /><br />";

                if(ftp_site($conn_id, $command) !== false) {
                    echo "Success! ".$path;
                } else {
                    echo "False! ".$path;
                }

                //close the connection
                ftp_close($conn_id);
            } else {
                echo "Error, not connected to Ftp ".$ftp_server;
            }
        }

        /**
         * @param $start_dir
         */
        public function listDir($start_dir){
            $backups = array();

            $backupdir = opendir($start_dir);

            echo "<strong>List: {$start_dir}</strong><br /><br />";

            while(($file = readdir($backupdir)) !== false):
                if(strcmp($file, '.')==0 || strcmp($file, '..')==0) continue;
                echo $start_dir.$file."<br />";
            endwhile;

            closedir($backupdir);
            array_multisort($backups, SORT_DESC);
        }
    }

    $ftp = new Ftp();

    $dir = $_SERVER['DOCUMENT_ROOT']."/admin/inc/template/";
    $ftp->listDir($dir);
    $ftp->ChangeMode($dir, "777");
?>

Спасибо за ваши советы и время.
 

WMix

герр M:)ller
Партнер клуба
проверить root вполне возможно что от / копать нельзя но начиная от public_html возможно запусти ftp и просматри лог но лучше закрыть ftp вход навсегда
 
Сверху