PHP的ftp_fput无法将数据上传到远程服务器

时间:2015-10-01 16:44:09

标签: php ftp

我一直在尝试将JSON编码数据发送到我的远程服务器进行存储,但我无法让它工作。我希望将JSON数据发送到我服务器上的现有文件,并将其附加到文件的末尾。

以下是我正在使用的内容:

$jsondata = json_encode($record);

$conn_id = ftp_connect("ftp://MY-USERNAME:MY-PASSWORD@MY-REMOTE-ADDRESS");
$temphandle = fopen('php://temp', 'r+');
fwrite($temphandle, $jsondata);
rewind($temphandle);

if(ftp_fput($conn_id, 'test.txt', $temphandle, FTP_ASCII)){
    echo "Successfully uploaded data";
} else {
    echo "There was a problem while uploading data";
};

ftp_close($conn_id);
fclose($temphandle);

我的if语句必须返回失败,因为我收到了问题错误。我相信我的FTP连接是成功的。我试图通过研究许多样本把它放在一起,我不确定我的问题在哪里。我在想我的ftp_fput函数的一个参数是不正确的。我非常感谢能帮助您实现这一目标。

谢谢

1 个答案:

答案 0 :(得分:0)

您并未真正向我们提供可用于识别问题的任何信息。

无论如何,您正在使用主动FTP模式。由于无处不在的防火墙和NAT,现在主动的FTP模式几乎不起作用。通常,您应该始终使用被动模式。

有关详细信息,请参阅我在FTP active and passive modes上的文章。

在PHP中,您可以在ftp_connect之后调用ftp_pasv(如果您使用ftp_login,则切换到被动模式。

$conn_id = ftp_connect("ftp://MY-USERNAME:MY-PASSWORD@MY-REMOTE-ADDRESS");
// turn passive mode on
ftp_pasv($conn_id, true);