【问题标题】:Upload large files to FTP with PHP使用 PHP 将大文件上传到 FTP
【发布时间】:2012-05-11 01:50:21
【问题描述】:

我正在尝试使用 php 将大文件上传到 ftp 服务器。我可以上传小文件,但上传大文件时遇到问题。查了一下发现需要设置upload_max_filesize和post_max_size,设置ftp为被动模式,设置时间限制为never。我没有设置时间限制,我现在没有返回任何错误,但它也没有上传文件。如果您查看底部的if (!$upload) { 行,它应该会回显某些内容,但事实并非如此。更重要的是,它只是不起作用。关于出了什么问题或我需要做些什么来完成这项工作的任何见解?谢谢!

ini_set('upload_max_filesize', '50M');   
ini_set('post_max_size', '50M');  

$conn_id = ftp_connect($ftp_server);

// login with username and password
$login_result = ftp_login($conn_id, $ftp_user_name, $ftp_user_pass);

// check connection
if ((!$conn_id) || (!$login_result)) {
        echo "FTP connection has failed!";
        echo "Attempted to connect to $ftp_server for user $ftp_user_name";
        exit;
}

 // turn passive mode on
ftp_pasv($conn_id, true);

if($_FILES['upload_file']['name']!=''){
    $source_file = $_FILES['upload_file']['tmp_name'];
    $destination_file = $_FILES['upload_file']['name']; 

    // upload the file
    $upload = ftp_put($conn_id, $destination_file, $source_file, FTP_BINARY);

    // check upload status
    if (!$upload) {
            echo "FTP upload has failed!<br />";
        } else {
            echo "Uploaded $source_file to $ftp_server as $destination_file<br />";
        }       
}

更新

我发现我无法从 php 页面设置 upload_max_filesize 值;另外,我似乎无法让 .htaccess 工作:如果我有一个 .htaccess 文件,则会导致 HTTP 错误 500。此外,我无权访问 php.ini。

我还能如何更改upload_max_filesize 值?

更多信息

我的网络管理员告诉我,我使用的是基于 IIS Windows 的系统,因此 .htaccess 文件将无法工作。有没有办法可以通过 web.config 影响文件上传大小?

【问题讨论】:

  • 你在哪里设置的时间限制?
  • 一些托管公司只会让你设置这么高。另外,与其在每次脚本运行时都设置,不如直接放在 php.ini 文件中?
  • 页面会一直加载吗?如果不是,它没有回显的原因一定是因为$_FILES['upload_file']['name'] 是''。并确保错误报告已开启。
  • @fhugas 我把它设置在最上面:set_time_limit(0)
  • @Sietse 如何打开错误报告?它会上传小文件,但不会上传大文件。

标签: php file-upload ftp


【解决方案1】:

来自这个网站:http://www.php.net/manual/en/ini.php

'upload_max_filesize' 和 'post_max_size'

属于 PHP_INI_PERDIR 类型

表示Entry可以在“php.ini, .htaccess or httpd.conf”中设置。所以你不能在你的脚本中设置它。

--- 编辑---

一个类似的问题: Changing upload_max_filesize on PHP

--- 编辑 2 ---

就个人而言,我想做同样的事情(通过 ftp 上传大文件)并最终编写一个 java 应用程序。对于处理大文件,php 并不是最好的方法。 Web 浏览器并不喜欢这样。因此,对于处理大文件,我建议查看其他替代方案:(java, swf, javascript, ...)

有空想试试http://nodejs.org/

【讨论】:

【解决方案2】:

正如@AngeDeLaMort 正确指出的那样,您不能使用简写符号在 PHP.ini 之外设置配置值。

参考:Changing upload_max_filesize on PHP

尝试这样做。

在您的根目录中创建 .htaccess 文件并添加以下内容。

php_value upload_max_filesize 50M
php_value post_max_size 50M
php_value max_execution_time 200
php_value max_input_time 200

【讨论】:

  • 创建.htaccess文件时页面无法显示:HTTP Error 500
  • 您的 .htaccess 文件中是否设置了其他规则?
  • 请确保将 .htaccess 文件放在正确的目录中。
  • 我把它和php页面放在同一个目录下。它会导致 HTTP 错误 500
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-07-13
  • 1970-01-01
  • 2016-03-31
  • 1970-01-01
  • 1970-01-01
  • 2013-02-22
相关资源
最近更新 更多