PHP's ftp_fput上传数据到远程服务器失败


PHP's ftp_fput failing to upload data to a remote server

我一直试图将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函数的一个参数是不正确的。我非常感谢你对我的帮助。

谢谢

你们并没有真正提供给我们任何可以用来识别问题的信息

无论如何,您使用的是活动FTP模式。由于无处不在的防火墙和nat,现在的主动FTP模式几乎不起作用。一般来说,你应该使用被动语态。

有关详细信息,请参阅我关于FTP主动和被动模式的文章。

在PHP中,通过在ftp_connect(或ftp_login,如果使用的话)之后调用ftp_pasv来切换到被动模式。

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