首页 > 解决方案 > 在远程 FTP 上复制或创建文件

问题描述

所以,我尝试了 4 种不同的方法来做到这一点,但都没有奏效。

有一个第 3 方服务器,我可以通过 Filezilla 在其上创建和删除文件。然而,这是出于测试目的。

我的 Laravel 应用程序上有一个脚本,它每天运行一次,创建一些 XML 文件,这些文件需要自动传输到同一台服务器。

当我创建 ftp 文件系统"ftp_rawlist(): php_connect_nonb() failed: Operation now in progress (115)"时,超时后出现错误。

当我尝试 PHP 的 ftp_put 或 ftp_fput 时,我得到了错误"ftp_put(): php_connect_nonb() failed: Operation now in progress (115)"(或 ftp_fput,同样的错误)。

当我尝试使用 ftp 作为目标的 PHP 的 fwrite 时,我收到错误“无法打开流:操作失败”。这在浏览器中也失败了。

我已确保凭据正确。我已经从有效的 Filezilla 连接详细信息中复制/粘贴了它们。

文件系统代码:

        'ftp' => [
            'driver' => 'ftp',
            'host' => env('FTP_HOST'),
            'username' => env('FTP_USERNAME'),
            'password' => env('FTP_PASSWORD'),
            'root' => '/Production',
            'ssl' => true,
            'ignorePassiveAddress' => true,
        ],

我知道 NAT 问题背后的服务器,但它不会接受我在文件系统中使用原始地址的更改。我已经清除了缓存,配置并喂了仓鼠,但没有任何变化。

老实说,我现在的知识已经走到了尽头。并且要求第 3 方更改他们的配置/设置不是一种选择。该服务器是众多服务器之一,它们完全相同,但客户端不同。他们可能会通过提供日志来帮助我,但仅此而已。

我看到的唯一可能有所不同的是,我正在从命令行运行此代码(即,就好像它是通过 cron 运行的一样)。不确定这是否会导致在远程服务器上连接和创建文件时出现问题。我没有编写 Laravel 命令的经验。

任何帮助将不胜感激。

标签: phplaravel-5ftpremote-serverfile-transfer

解决方案


好的。

好的。在配置文件里面是这样的:

'ftp' => [
    'driver' => 'ftp',
    'host' => 'ftp.example.com',
    'username' => 'your-username',
    'password' => 'your-password',
   'passive' => 'false',
   'ignorePassiveAddress' => true,
   'port' => 21,
]

在 ftp 中添加文件“test.pdf”

简单地运行

$contents = \Storage::disk('ftp')->exists('test.pdf');

dd( $contents );

它有效。


推荐阅读