ftp_put工作了一个月,现在已经停止了?

时间:2013-07-25 07:28:32

标签: php upload ftp

您的语法如下:

$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中的手动传输具有相同的凭据成功。

谢谢和问候。

2 个答案:

答案 0 :(得分:4)

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

ftp_pasv($conn, true);

目的地的防火墙可能发生了一些变化。

答案 1 :(得分:1)

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

使用FTP_BINARY,FTP_ASCII 使用被动/主动模式,没有运气。 可能是一个错误?见Bug #46531 ftp_put returns error on Accepted data connection

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

解决方案:请勿使用ftp_ssl_connect使用ftp_connect代替