PHP ftp_put无法将数据上载到远程服务器

问题描述 投票:0回答:1

我一直在尝试将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函数的一个参数是不正确的。我非常感谢能帮助您实现这一目标。

谢谢

php ftp
1个回答
0
投票

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

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

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

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

$conn_id = ftp_connect("ftp://MY-USERNAME:MY-PASSWORD@MY-REMOTE-ADDRESS");
// turn passive mode on
ftp_pasv($conn_id, true);
© www.soinside.com 2019 - 2024. All rights reserved.