【问题标题】:PHP upload_max_filesize not obeyedPHP upload_max_filesize 不服从
【发布时间】:2023-03-14 19:50:01
【问题描述】:

PHP /etc/php.ini 不遵守upload_max_filesize

详情: 使用<?php echo phpinfo(); ?> 我可以看到“加载的配置文件”是/etc/php.ini

在这个文件中我有值:

file_uploads = On
upload_max_filesize = 12M
post_max_size = 12M

但是 phpinfo();显示upload_max_filesize 2M

重新启动 Apache 几次后,无论我更改 upload_max_filesize 和 max_post_size,此值都不会被遵守。

我已经通过使用 .htaccess 指令解决了这个问题

php_value upload_max_filesize 12M
php_value post_max_size 12M

这允许更改上传值,PHPINFO() 现在可以正确显示该值。

Directive            Local Value    Master Value
upload_max_filesize  12M            2M

问题是:为什么首先不遵守 /etc/php.ini 文件? 运行 CentOs 5.4,php 5.3.29 在 /etc/php.d/* 中搜索 (grep -inr '2M' *) 未找到任何内容。

为什么它不听它说它正在使用的主 php.ini 文件?

已经看过了 PHP upload_max_filesize

Changing upload_max_filesize on PHP

在 SO 上没有成功。

--更新-- 搜索 grep -inr 'upload_max_filesize in /etc/*.ini.conf,只返回 12M 值。 搜索 /etc/httpd/conf/ /etc/httpd/conf.d/ 显然是虚拟主机的根目录。 grep 返回 0 结果的虚拟主机中没有特殊设置。

Additional .ini files parsed
    /etc/php.d/bcmath.ini, /etc/php.d/curl.ini, /etc/php.d/dom.ini, /etc/php.d/fileinfo.ini, 
    /etc/php.d/gd.ini, /etc/php.d/intl.ini, /etc/php.d/json.ini, /etc/php.d/ldap.ini, 
    /etc/php.d/mbstring.ini, /etc/php.d/mcrypt.ini,
/etc/php.d/mysql.ini, /etc/php.d/mysqli.ini, /etc/php.d/pdo.ini, /etc/php.d/pdo_mysql.ini, /etc/php.d/pdo_sqlite.ini,
/etc/php.d/phar.ini, /etc/php.d/posix.ini, /etc/php.d/soap.ini,    /etc/php.d/suhosin.ini, /etc/php.d/sysvmsg.ini, /etc/php.d/sysvsem.ini, etc/php.d/sysvshm.ini,
/etc/php.d/wddx.ini, /etc/php.d/xdebug.ini, /etc/php.d/xmlreader.ini, /etc/php.d/xmlwriter.ini,
/etc/php.d/xsl.ini, /etc/php.d/zip.ini

【问题讨论】:

  • phpinfo() 页面的前几行,它应该告诉正在加载哪个php.ini。搜索php.ini
  • @Raptor :OP 说 /etc/php.ini 确实被使用了。
  • 糟糕。我错过了那条线
  • @Raptor:还是谢谢你。我忽略了您可以查看 phpinfo() 结果以查看使用了哪个 .ini 的事实。
  • @Raptor :顺便说一句,是否可以同时拥有多个 .ini 文件。一个通用的和一个自定义的,可用于根据需要覆盖通用的设置。

标签: php apache .htaccess upload


【解决方案1】:

如果您检查phpinfo() 的前几行,您就会知道
哪个 php.ini 被加载。(礼貌@Raptor)

在您的问题中,您提到 /etc/php.ini 确实是加载的。

在这种情况下,您的 httpd.conf 可能包含如下内容:

php_value upload_max_filesize somevalue

这是一个将应用于所有网站的全局值。
我猜它可能会覆盖 php.ini 设置。

【讨论】:

  • 谢谢sjsam,我去看看http.conf和其他包含的conf文件看看。我最初确实看过那里(php.conf),但看不到任何关于 2MB 限制的内容......将仔细研究 apache 方面
  • 嗨 sjsam,我查看了 /etc/*.ini /etc/*.conf /etc/httpd/conf/* /etc/httpd/conf.d/* 并没有提及'upload_max_filesize'... + 也试过 /etc/php.d 没有成功....
【解决方案2】:

我在网站根目录中的 .htaccess 覆盖了 php.ini 中的这个值。

【讨论】:

    【解决方案3】:

    我也浪费了很多时间试图弄清楚这一点。事实证明,如果您使用的是 php-fpm,就会发生这种情况。 php.ini 文件将被读取,phpinfo() 会告诉您它已被读取,但最大文件大小值(以及其他一些值)将被忽略。

    我在安装 Centos8 时遇到了这种情况,我花了很长时间才注意到它使用的是 php-fpm 而不是 mod_php,所以 mod_php 的所有参数都被忽略了。

    您的选择是安装 mod_php 或仅正确配置 php-fpm(更好)。

    【讨论】:

      【解决方案4】:

      尝试在您的 htaccess 文件中设置。可能这对你们有帮助。它对我有用

      php_value post_max_size 30M
      php_value upload_max_filesize 25M
      php_value upload_max_size 25M
      

      【讨论】:

      • 感谢您的回复。我确实在帖子中写道 .htaccess 方法是一种合适的解决方法,但它没有解释 2MB 来自哪里/哪个/为什么的问题......无论如何,使用 .htaccess 的合适解决方法。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-05-13
      • 2016-09-19
      • 2011-12-06
      • 2019-06-10
      • 1970-01-01
      • 2010-11-10
      相关资源
      最近更新 更多