【问题标题】:PHP file uploadPHP文件上传
【发布时间】:2011-01-26 13:34:05
【问题描述】:

我在使用 php 上传文件时遇到了很大的麻烦。 我自己的测试是成功的,但我的同事告诉我他无法更新“更大”(约 5mb)的文件。

phpinfo 说: - max_execution_time 30 - memory_limit 32 Mb - post_max_size 8 Mb - upload_max_filesize 10 Mb

使用 FTP 更好吗?问题是我无法在我的虚拟主机上更改这些设置。

【问题讨论】:

  • 基于那些大约 5MB 的设置文件应该可以上传。
  • 但这不好:(我的同事无法更新大于 5 Mb 的文件。显示页面花了很长时间,然后出现内部服务器错误。

标签: apache php


【解决方案1】:

我已经请求支持 max_execution_time 和 max_input_time 的设置,并且设置为最大值 120。因此,所有耗时超过 2 分钟的上传都会导致内部服务器错误。

【讨论】:

    【解决方案2】:

    为什么您没有错误处理来确定为什么您的同事无法上传文件?是执行时间吗?是内存限制吗?它是最大帖子大小吗?是上传大小吗?

    您是否检查过他上传文件时会发生什么?什么时候会失败?

    如果网络服务器的设置较小,则 PHP post_max_size 无关紧要 - 你检查了吗?

    HTTP 上传可能无法正常工作的原因有很多,但如果您的问题的答案是 FTP,那么您就问错了问题。

    C.

    【讨论】:

    • 如何处理此类错误?我的同事正在上传一个 5Mb 或更大的文件,然后服务器没有响应需要很长时间(我猜是上传引起的),然后出现内部服务器错误。如果网络服务器的设置较小,则 PHP post_max_size 无关紧要 - 你检查过吗? PHPInfo 打印出来:8Mb
    • 你之前没说“这需要很长时间”。超过30秒?如果您的网络服务器设置较低,则 PHP 中 post_max_size 的设置再次无关紧要 - phpinfo 仅报告 PHP 设置 - 而不是网络服务器设置
    • 我已将 max_input_time 和 max_execution_time 的设置更改为无限制,但是当上传时间超过 2 分钟时,会出现内部服务器错误。我被 webhoster 要求支持,似乎 webser 的设置像你说的那样低。
    【解决方案3】:

    您的脚本无法在生产环境中运行,因为您的 max_execution_time 设置为 30 秒。这意味着您只有 30 秒的时间在您的服务器下上传您的文件。如果您没有 T1 互联网连接,您将无法上传文件。在您的上传脚本中尝试运行以下命令:

    set_time_limit(0);
    

    这将禁用 max_execution_time 定义,让任何连接速度用户使用您的脚本上传文件。

    更多信息http://php.net/manual/en/function.set-time-limit.php

    问候。

    【讨论】:

    • 这是我正在考虑的一种可能性,但目前的测试结果是否定的。再次是内部服务器错误。也许我需要使用 FTP
    【解决方案4】:

    您可以使用 ini_set() 更改这些设置

    【讨论】:

    • 不,你不能。仅在PHP_INI_PERDIR 的基础上。见:php.net/manual/en/ini.list.php
    • 我的 Webhoster 是strato.de,据我所知,他没有为每个文件夹提供类似 php_ini 的设置。
    猜你喜欢
    • 2014-07-14
    • 2017-01-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多