Загрузка всего каталога через PHP на удаленный хост через FTP

#php #codeigniter #web-applications

#php #codeigniter #веб-приложения

Вопрос:

Я использую Codeigniter для создания веб-сайта, и я попытался создать функцию для загрузки всего каталога через FTP на удаленный хост, но ничего не работает

Я попробовал 2 функции, которые я нашел, но также не работает, загружено всего несколько файлов, а размер некоторых файлов равен 0 байтам

Используемые функции :

 // 1St Function

public function ftp_copy($src_dir, $dst_dir) {
        $d = dir($src_dir);

        while($file = $d->read()) {

            if ($file != "." amp;amp; $file != "..") {

                if (is_dir($src_dir."/".$file)) {

                    if (!@ftp_chdir($this->conn_id, $dst_dir."/".$file)) {

                        ftp_mkdir($this->conn_id, $dst_dir."/".$file);
                    }

                    ftp_copy($src_dir."/".$file, $dst_dir."/".$file);
                }
                else {

                    $upload = ftp_put($this->conn_id, $dst_dir."/".$file, $src_dir."/".$file, FTP_BINARY);
                }
            }
        }

        $d->close();
    }


// 2nd Solution from Stackoverflow question
    foreach (glob("/directory/to/upload/*.*") as $filename)
        ftp_put($ftp_stream, basename($filename) , $filename, FTP_BINARY);
  

Есть решение??

Комментарии:

1. какую функцию вы используете?

Ответ №1:

Если вы используете codeigniter, вы можете использовать $this-> ftp-> mirror() из их библиотеки FTP.

http://codeigniter.com/user_guide/libraries/ftp.html

 $this->load->library('ftp');

$config['hostname'] = 'ftp.example.com';
$config['username'] = 'your-username';
$config['password'] = 'your-password';
$config['debug']    = TRUE;

$this->ftp->connect($config);

$this->ftp->mirror('/path/to/myfolder/', '/public_html/myfolder/');

$this->ftp->close();
  

Комментарии:

1. Я использовал зеркальную функцию, но передавал исходный каталог без косой черты, теперь я добавил косую черту в конце, и она работает. Спасибо