在 PHP 上更改 upload_max_filesize

新手上路,请多包涵

我正在使用 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 就不需要重新启动它。

原文由 Ross 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 438
2 个回答

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

另一方面,我不认为 upload_max_filesize 可以使用 ini_set() 设置。 “官方”列表 指出它是 PHP_INI_PERDIR

原文由 Rob 发布,翻译遵循 CC BY-SA 3.0 许可协议

请注意,为完整的服务器或完整的虚拟主机设置较大的 post_max_size 或 upload_max_filesize 不是一个好主意,因为这可能会导致安全风险增加。

风险在于攻击者可能会发送非常大的 POST 请求并导致服务器内存和 CPU 过载,因为它必须在将这些请求处理到 PHP 脚本之前对其进行解析和处理。

所以最好限制将此设置更改为某些文件或目录。例如,如果我想 /admin/files/ 和 /admin/images/ 我可以使用:

 <If "%{REQUEST_URI} =~ m!^/admin/(files|images)/! && -n %{HTTP_COOKIE}">
    php_value post_max_size 256M
    php_value upload_max_filesize 256M
</If>

我还要求请求有一个 cookie 以避免基本攻击。这不会保护您免受来自未经身份验证的用户的攻击,但可能会延迟任何攻击。

此设置可用于 Apache 服务器配置文件和 .htaccess 文件。

原文由 bohwaz 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题