3

嗨有以下语法:

$source = $csv_filename;  
$target = '/locexport/'.$csv_filename;
$conn = ftp_connect("ftp.server.com") or die("Could not connect");
ftp_login($conn, "ftpusername", "ftppassword");

ftp_pasv($conn, false); 

$upload = ftp_put($conn, $target, $source, FTP_ASCII);
if (!$upload) { echo 'FTP upload failed!'; }

该脚本每隔几个小时运行一次 cron 作业,并且已经运行了几个月。

它突然停止工作。

回显 $source 和 $destination 显示正确的路径。

错误信息是:

Warning: ftp_put() [function.ftp-put]: Opening ASCII mode data connection. in /home/shareduser/public_html/export/export.php on line 55
FTP upload failed!

第 55 行是:

 $upload = ftp_put($conn, $target, $source, FTP_ASCII);

我尝试将 FTP_ASCII 更改为 FTP_BINARY 但结果相同。

任何想法如何解决这个问题?这不是权限问题,因为使用相同凭据在 Filezilla 中手动传输成功。

谢谢并恭祝安康。

4

2 回答 2

5

您可以尝试切换到被动模式(将其设置为true):

ftp_pasv($conn, true);

也许目的地的防火墙发生了一些变化。

于 2013-07-25T07:39:03.833 回答
1

这里有类似的问题,但我得到的警告是: ftp_fput(): Accepted data connection

使用 FTP_BINARY,FTP_ASCII 使用被动/主动模式,没有运气。可能是一个错误?请参阅错误 #46531 ftp_put 在接受的数据连接上返回错误

编辑: 找到一个解决方法,不确定它是否适用于任何人,因为它涉及 SSL 连接,坏的是它在最后一次 PHP 更新之前工作正常(更新到 5.6.14)

解决方案:不要使用ftp_ssl_connectuseftp_connect代替

于 2015-11-03T20:27:10.383 回答