php - 在远程 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 命令的经验。
任何帮助将不胜感激。
解决方案
好的。
好的。在配置文件里面是这样的:
'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 );
它有效。
推荐阅读
- kubernetes - 关于enterprise_gateway读取数据创建的内核的问题
- string - 通过提取字符串变量的内容来创建变量,其中值变量为 lengh
- database - Firebase - 使用集合、子集合或数组?
- android - React Native WebView 在某些设备上不起作用
- html - 将媒体查询规则直接添加到 SVG 路径、多边形或矩形
- teradata - 用于值范围的 Teradata LIKE - (正则表达式?)
- r - R:在表达式中使用括号
- python-3.x - python线程安全键值存储
- javascript - 我如何分页计数器?
- mysql - 用 SQL 更新一个字段,其中另一个字段不为空