首页 > 解决方案 > 使用 Laravel 7 上传文件时出现 FTP 连接问题

问题描述

我想Laravel使用FTP.

这似乎是一个非常简单的任务,所以让我们看看我的配置:

.env 文件

FTP_HOST=dl.myserver.com
FTP_USERNAME=beni@dl.myserver.com
FTP_PASSWORD=somePass

文件系统.php

    'disks' => [

        'local' => [
            'driver' => 'local',
            'root' => storage_path('app'),
        ],

        'ftp' => [
            'driver' => 'ftp',
            'host' => env('FTP_HOST'),
            'username' => env('FTP_USERNAME'),
            'password' => env('FTP_PASSWORD'),
            'passive'  => true,
            'port' => 21,
            'root' => '/home/myserver/public_html/podcasts'
        ],
       .
       .
       .

最后是我的控制器

        $year = Carbon::now()->year;
        $month = Carbon::now()->month;
        $day = Carbon::now()->day;

        //podcast
        $podcast = $request->file('podcast');
        $filename = $podcast->getClientOriginalName();
        $purename = substr($filename, 0, strrpos($filename, '.'));


        $filenametostore = $purename . '_' . $year .'_' . $month . '_' . $day . '.' . $podcast->getClientOriginalExtension();

        Storage::disk('ftp')->put($filenametostore, fopen($request->file('podcast'), 'r+'));

.
.
.

但我有这个错误:

League\Flysystem\ConnectionRuntimeException

无法使用连接登录:dl.myserver.com::21,用户名:beni@dl.myserver.com

我的FTP帐户和信息是真实的,因为我使用FileZilla.

作为提及,我dl.server.com正在使用CPANEL.

关于这个问题有什么想法吗?

提前致谢

标签: phplaravelftpconnection

解决方案


令人惊讶的是,当我替换env('FTP_HOST'),env('FTP_USERNAME')env('FTP_PASSWORD')在文件中使用等效的字符串值时问题解决了filesystems.php

我尝试了纯PHPFTP functions并弄清楚了:

        $conn_id = ftp_connect("dl.myserver.com");
        ftp_login($conn_id, "beni@dl.myserver.com", "somePass");
        dd(ftp_put($conn_id, $filenametostore, $request->file('podcast'), FTP_ASCII));

所以我的 Laravelfilesystem.php看起来像这样:

        'ftp' => [
            'driver' => 'ftp',
            'host' => "dl.myserver.com", //env('FTP_HOST'),
            'username' => "beni@dl.myserver.com", //env('FTP_USERNAME'),
            'password' => "somePass", //env('FTP_PASSWORD'),
        ],

在我的情况下它工作正常。


推荐阅读