【问题标题】:FTP Api? PHP Server to server uploadingFTP API? PHP 服务器到服务器上传
【发布时间】:2012-10-19 22:10:09
【问题描述】:

我知道有大量的 PHP FTP 函数,但我在过去尝试了很多次以使基础知识能够正常工作。可以连接,但通常会遇到列出目录等问题。

是否有服务或 API 可以让我告诉它下载此文件夹(或 zip)然后上传并解压缩到此服务器? (只是转移也可以)。

PHP 有这方面的功能,但我无法让它工作 - 使用 Laravel 框架和带有 PagodaBox 托管的 SFTP 包,似乎 Pagoda 甚至没有安装 php FTP 模块。

在没有 PHP 或一些远程服务的情况下有什么方法可以做到这一点?

或者我是否需要为 FTP PHP 功能设置正确的第二台服务器,然后创建我自己的小 api?有没有开箱即用的正确设置的优秀托管公司?

更新

有关我正在尝试做的事情的更多信息:

我正在创建一项服务,人们可以在其中创建网站,然后可以将该网站下载为 zip 文件(HTML 文件等),但我想为我的客户提供一种使用 FTP 自动为他们上传的方法。

【问题讨论】:

  • PagodaBox 至少通过其管理系统阻止 FTP,因此他们可能会阻止 FTP(或完全不使用它)。顺便问一下 PagodaBox 吗?
  • 您也可以尝试FTPBundleSymfony 2 Quickstart(单独安装)。
  • 我必须在 PagodaBox 的 boxfile 中添加 PHP 扩展 ftp,以使 FTP 功能正常工作。 :) 掌握整个 boxfile 的东西。谢谢你的帮助:)

标签: php ftp


【解决方案1】:

您可以使用cURL. 来做到这一点

这是一个示例代码:

<?php
if(!function_exists('curl_init'))
    die('cURL isn\'t available too!');

$file = "toUp.zip";
$ch = curl_init();
$fp = fopen($file, 'r');

curl_setopt($ch, CURLOPT_URL, 'ftp://username:password@site.com/public_html/'.$file);
curl_setopt($ch, CURLOPT_UPLOAD, 1);
curl_setopt($ch, CURLOPT_INFILE, $fp);
curl_setopt($ch, CURLOPT_INFILESIZE, filesize($file));

curl_exec($ch);
$err_no = curl_errno($ch);
curl_close($ch);
fclose($fp);

if($err_no == 0){
    echo 'FTP Transfer complete.';
}else{
    echo 'FTP Transfer error: '.$err_no;
    echo '. See http://curl.haxx.se/libcurl/c/libcurl-errors.html';
}
?>

【讨论】:

  • 不错!谢谢!我要试试这个。 :)
【解决方案2】:

(代表问题作者发布答案)

这已解决 - 我必须在 Pagodabox 中编辑 boxfile 以进行 PHP 扩展。

【讨论】: