【问题标题】:Changing upload_max_filesize on PHP在 PHP 上更改 upload_max_filesize
【发布时间】:2010-11-10 11:32:20
【问题描述】:

我正在使用 PHP 5.3.0,并且遇到了一些可能是错误(在这种情况下我会报告它)或者可能是我的问题 - 所以我要求确认一下。

运行此代码时:

<?php
ini_set('upload_max_filesize', '10M');
echo ini_get('upload_max_filesize'), ", " , ini_get('post_max_size')

我最终得到:

2M, 8M

尽管我的 php.ini 设置得更高:

upload_max_filesize = 10M
post_max_size = 10M

(只出现一次)

因为在设置值以及在 php.ini 中设置值之后发生错误,所以我倾向于认为这是一个错误。谁能确认或指出我哪里出错了?

更新:看起来重启 Apache 解决了这个问题 - 我一直认为如果你更改了 php.ini,它就不需要重启。

【问题讨论】:

  • "我一直以为改了php.ini就不需要重启了。" PHP CLI 会立即获取更改,因为它会在每次调用时解析 php.ini。 mod_php 解析 php.ini 一次 -- 当 apache 启动时。
  • 我最近遇到了同样的问题。如果不重新启动 Apache,upload_max_filesize 将不会生效。我在 PHP 5.2.9 上。重启后一切正常。
  • 要避免完全重启 apache,只需使用“sudo service apache2 reload”

标签: php upload


【解决方案1】:

您不能使用shorthand notation 在 PHP.ini 之外设置配置值。我假设它在遇到错误值时会回落到 2MB 作为编译默认值。

另一方面,我认为upload_max_filesize 不能使用ini_set() 设置。 "official" list 声明它是 PHP_INI_PERDIR

【讨论】:

  • 你想的没错!您不能使用 ini_set() 设置 upload_max_filesize,因为 upload_max_filesize 是 PHP_INI_PERDIR 类型,这意味着只能通过 php.ini、.htaccess 或 httpd.conf 更改,如:php.net/manual/en/configuration.changes.modes.php
  • 其实可以在 PHP.ini 之外使用简写;您可以在.htaccessini_set 中使用它。不过,也许不是所有版本。
【解决方案2】:

您是否使用共享托管服务提供商?可能是主设置覆盖了您尝试更改的任何内容。您是否尝试将这些添加到您的 .htaccess 中?

php_value upload_max_filesize 10M
php_value post_max_size 10M

【讨论】:

  • 不,这是我自己机器上的 Apache/PHP 实例(如果相关,它是 Windows)。我会尝试将这些添加到 Apache 配置中。
  • 更新:这确实会影响它(将它们更改为 10),因此此方法有效。我仍然很困惑为什么它不能在 php.ini 或使用 ini_set 中工作。
  • +1 如果您无法访问 php.ini,这绝对是您的最佳选择 - 非常感谢。
  • 请注意,这只适用于将 PHP 作为模块运行的 Apache,而不是作为 CGI 运行
  • 我会说这是首选方法,即使可以访问php.ini 文件。允许您根据需要而不是全局设置来设置这些权限。
【解决方案3】:

由于我刚刚在共享主机上遇到此问题并且无法将值添加到我的 .htaccess 文件中,因此我想我会分享我的解决方案。

我创建了一个包含值的 ini 文件。就这么简单:

创建一个名为“.user.ini”的文件并添加您的值

upload_max_filesize = 150M
post_max_size = 150M

砰,问题解决了。

【讨论】:

  • “除了主 php.ini 文件,PHP 会扫描每个目录中的 INI 文件,从请求的 PHP 文件的目录开始,一直到当前文档根目录。” php.net/manual/en/configuration.file.per-user.php
  • 适用于 wordpress 网站!谢谢!
  • 这很好用,因为我无法从 .htaccess 中做到这一点。谢谢大佬!
  • PHP 默认每 5 分钟重新读取一次 user.ini 文件。所以如果结果没有立即出现,请耐心等待
  • 我无法设置高于150M,这正常吗?
【解决方案4】:

我使用与加载我的应用程序的 index.php 脚本位于同一目录中的 .user.ini 文件来实现此功能。以下是内容:

upload_max_filesize = "20M"
post_max_size = "25M"

这是 Heroku 的推荐解决方案。

【讨论】:

    【解决方案5】:

    这也可以通过 apache 配置来控制。检查 httpd.conf 和/或 .htaccess 是否有类似以下内容:

    php_value upload_max_filesize 10M
    

    【讨论】:

      【解决方案6】:

      如果您在本地服务器中运行,例如 wamp 或 xampp,请确保它使用的是您认为的 php.ini。这些服务器通常默认使用不在您的 html docs 文件夹中的 php.ini。

      【讨论】:

        【解决方案7】:

        我也遇到过同样的问题,但我发现并非所有的配置设置都可以使用 ini_set() 函数进行设置,请查看Where a configuration setting may be set

        【讨论】:

          【解决方案8】:

          默认情况下,PHP 允许在服务器上上传最大 2 MB 的文件。但是您可以根据自己的情况修改文件上传的最大大小。通过使用 PHP 配置文件 php.ini,您可以增加或减少 PHP 中的文件上传大小。

          首先在文本编辑器中打开 php.ini 文件。 搜索 upload_max_filesize 变量并指定要增加的大小。

          搜索 post_max_size 变量并指定要增加的大小。

          post_max_size = 128M
          

          你可以通过here查看这个

          【讨论】:

            【解决方案9】:

            如果您即时使用 ini_set,那么您将在 http://php.net/manual/en/ini.core.php 找到信息,例如upload_max_filesize 和 post_max_size 不能即时更改 (PHP_INI_PERDIR)。

            似乎只有 php.ini、.htaccess 或 vhost 配置更改会更改这些变量。

            【讨论】:

              【解决方案10】:

              此解决方案仅适用于 WordPress 安装问题!

              如果您没有 FTP 访问权限或懒得编辑文件,

              您可以使用Increase Maximum Upload File Size plugin 来增加最大上传文件大小。

              【讨论】:

                【解决方案11】:

                你也可以像这样在php文件中使用

                <?php ini_set('upload_max_filesize', '200M'); ?>
                

                【讨论】:

                  猜你喜欢
                  • 1970-01-01
                  • 1970-01-01
                  • 1970-01-01
                  • 2011-12-23
                  • 1970-01-01
                  • 1970-01-01
                  • 2015-11-29
                  相关资源
                  最近更新 更多