通过 PHP 将整个目录通过 FTP 上传到远程主机

发布于 2024-12-10 12:47:02 字数 1074 浏览 0 评论 0原文

我正在使用 Codeigniter 创建一个网站,我尝试创建一个函数来通过 FTP 将整个目录上传到远程主机,但没有任何效果

我尝试了我发现的 2 个函数,但也不起作用,只上传了几个文件,并且某些文件大小为 0 字节

使用的功能:

// 1St Function

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

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

            if ($file != "." && $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);

任何解决方案?

I'm using Codeigniter to create a web site, and I tried to create a function to upload the entire directory via FTP to a remote host, but nothing is working

I tried 2 functions I found, but also not working, only few files uploaded, and some files size is 0 bytes

Functions Used :

// 1St Function

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

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

            if ($file != "." && $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);

Any solution ??

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

平定天下 2024-12-17 12:47:02

如果您使用的是 codeigniter,您可以使用其 FTP 库中的 $this->ftp->mirror() 。

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();

If you are using codeigniter you can use $this->ftp->mirror() from their FTP Library.

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();
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文