通过 PHP FTP PUT 将文本文件上传到 Google 上传
Posted
技术标签:
【中文标题】通过 PHP FTP PUT 将文本文件上传到 Google 上传【英文标题】:Upload text file to Google uploads via PHP FTP PUT 【发布时间】:2016-12-14 01:32:40 【问题描述】:我正在尝试上传通过 php 从数据库创建的文本文件。
文本文件创建成功,但是当我尝试通过 PHP FTP Put 上传文件时失败。
我的代码:
$filename = "products_admin.txt";
$handle = fopen($filename, 'w+');
fwrite($handle, $content);
fclose($handle);
echo "Attempting to connect to <i>uploads.google.com</i>...<br />";
$ftp_connect = ftp_connect("uploads.google.com", "21", "5000") or die("failed to connect.");
$login_result = ftp_login($ftp_connect, "usernamehere", "passwordhere") or die("ERROR: Username or Password incorrect.");
if((!$ftp_connect) || (!$login_result))
echo "ERROR: Couldn't connect to <i>uploads.google.com</i>, upload failed.<br /><br />";
echo "<a href=\"javascript:location.reload(true)\">Try Again</a>";
exit;
else
echo "Connected to <i>uploads.google.com</i>...<br />";
$upload = ftp_put($ftp_connect, $filename, $filename, FTP_ASCII);
if(!$upload)
echo "ERROR: Failed to upload ".$filename." to <i>uploads.google.com</i>.<br /><br />";
echo "<a href=\"javascript:location.reload(true)\">Try Again</a>";
else
echo "Uploading <i>".$filename."</i> to <i>Froogle</i>...<br />";
echo "Successfully uploaded <i>".$filename."</i> to <i>uploads.google.com</i>.<br /><br />";
echo "Done.";
ftp_close($ftp_connect);
我得到的错误信息是
警告:ftp_put(): PORT IP 与 176.32.230.48 不同。在 /home/sites/mysite.co.uk/public_html/admin/controllers/generate_feed.php 第 100 行错误:无法将 products_admin.txt 上传到 uploads.google.com。
【问题讨论】:
【参考方案1】:您可能只需要激活被动模式:
...
$login_result = ftp_login($ftp_connect, "usernamehere", "passwordhere") or die("ERROR: Username or Password incorrect.");
ftp_pasv($ftp_connect, true);
...
【讨论】:
docs 中 cmets 部分的一个注释:如果您在选择 ftp_pasv() 后仍然遇到问题,您应该在 x 个文件后通过 ftp_close() / ftp_connect() 刷新连接和/或 y GB 已被转移。【参考方案2】:当我在我的 Google Compute Engine 服务器上使用 FTP 时,我遇到了同样的问题,因为服务器位于 Google 的防火墙后面。您可以阅读有关此问题的更多信息here。您可以尝试使用函数ftp_pasv 启用不关心IP 的被动模式。
【讨论】:
以上是关于通过 PHP FTP PUT 将文本文件上传到 Google 上传的主要内容,如果未能解决你的问题,请参考以下文章
通过带有PHP代码的Web服务器将应用程序上的本地文件上传到FTP服务器