PHP 7中的php.ini文件中的upload_max_filesize无法正常工作

33

我在互联网上阅读了许多解决方案,但仍然无法更改upload_max_filesize值(upload_max_filesize始终等于2M)。

以下是我在phpinfo()中加载的php.ini

Configuration File (php.ini) Path         /etc/php/7.0/apache2
Loaded Configuration File                    /etc/php/7.0/apache2/php.ini
Scan this dir for additional .ini files      /etc/php/7.0/apache2/conf.d 
upload_max_filesize 2M  2M
post_max_size   8M  8M

这是我编辑过的 /etc/php/7.0/apache2/php.ini 文件。

; http://php.net/post-max-size
post_max_size = 86M
; http://php.net/upload-max-filesize
upload_max_filesize = 40M

我正在使用Ubuntu 14.04,Apache2,PHP7.0(每次更改php.ini后都已重置Apache2多次)。


你需要检查php.ini的路径,似乎你正在其他地方进行更改。 你可以在phpinfo中看到ini路径,只需检查“配置文件(php.ini)路径”行即可。 - Afshan Shujat
1
重新启动服务器并检查更改。 - Afshan Shujat
我已经多次重启了Apache2,但它仍然是一样的... - CuongDC
1
php -i | grep -i "upload\_max\_filesize\|post\_max\_size\|max\_file\_uploads" 是一个有用的命令,可以帮助您捕捉到更新的任何 "ini" 文件可能尚未重新加载或根本不是正在使用的正确文件。 - Ryan
请参见 https://dev59.com/glYM5IYBdhLWcg3wnBJY#Mw0moYgBc1ULPQZFAY-2。 - Ryan
显示剩余2条评论
16个回答

51

我为PHP-FPM 7.1找到了一个解决方法

编辑您的php.ini文件,路径为

/etc/php/7.1/fpm/php.ini

您可以更改任何选项,例如post_max_size、upload_max_filesize、max_execution_time等

保存并关闭文件。

运行以下命令:

sudo service php7.1-fpm restart

这样就可以了!


2
对我来说,这很简单 - 而且很合乎逻辑。我们更改了 PHP 变量,而不是 Apache2。 因此,只需重启 PHP 即可! - Brian Milnes
2
当然!您需要重新启动FPM!非常感谢!只是需要回想起来。 - Srivats Shankar
2
谢谢!我习惯于以MPM方式运行,只需要重新启动Apache即可。但是自从切换到FPM(为了支持http/2),我没有意识到需要直接重启FPM。 - adrian
在我的情况下,我只需要编辑/etc/php.ini、重新启动httpd。我检查了php进程(ps ax | grep -i php),并重新启动了它:systemctl restart php-fpm。这是在CentOS Stream上进行的操作。 - imclean

25
我有一个其他的解决方法。 操作系统: Ubuntu 16.04 PHP版本: 7.0
我创建了一个包含以下内容的phpinfo.php文件:
<?php phpinfo() ?>

将phpinfo.php文件放在您网站的根目录www.mywebsite.com/phpinfo.php。

导航到它并查找以下行:

已加载的配置文件:/etc/php/7.0/cgi/php.ini

现在您知道加载了哪个php.ini文件。

ssh进入服务器并使用您喜欢的编辑工具(我喜欢nano)来调整php.ini。

更改值以满足您的偏好。

post_max_size = 128M

upload_max_filesize = 64M

保存并关闭文件。

重新启动apache。

sudo service apache2 restart

检查phpinfo.ini,确认新值是否已设置。

如果已经设置完成,则可以继续操作。


3
/etc/php/7.0/cgi/php.ini 应该改为 /etc/php/7.0/cli/php.ini。默认的 PHP 安装中没有 cgi 目录。 - dimitry_n
啊,有人已经回答了,是正确的,只要查看phpinfo(); 今天我用php --ini错误地使用了错误的路径,我想... - undefined

21

我找到了解决方法!

在我的php.ini配置文件中,我的error_reporting值为E_ALL & ~E_NOTICE & ~E_STRICT & ~E_DEPRECATED - 这是错误的! 所以我把它改成了

error_reporting: E_ALL,然后重新启动apache2服务器,现在一切都正常了!


请注意:如果php.ini有任何错误,它将使用默认值(这意味着upload_max_filesize始终为2M)。


这就是原因。我的问题已经解决了。 - tggm
这个可行,谢谢。我认为这非常不直观,很幸运能找到你的解决方案。 - merodeador
@CuongDC 谢谢你,但我仍然需要看到我的错误,我该怎么做?尽管我更改了值,但我仍然得到2M。 - Abeer Sul
@AbeerSul 你重启了Web服务器吗? - CuongDC
@CuongDC 是的,但它没有解决问题,谢谢,我终于在这里解决了 https://stackoverflow.com/questions/67967282/why-is-php-not-allowing-me-to-upload-more-than-2mb-file/67967354?noredirect=1#comment120142756_67967354 - Abeer Sul
@AbeerSul 很高兴知道 ^^ - CuongDC

10

对于php7.2-fpm

Ubuntu中的php-fpm位于/etc/php/7.2/fpm,因此

  1. cd /etc/php/7.2/fpm
  2. sudo nano php.ini
  3. 搜索 post_max_size = 512M 并添加您真正需要的喜爱尺寸
  4. 搜索 upload_max_filesize = 512M 并添加您真正需要的喜爱尺寸
  5. 保存文件
  6. 最后不要忘记重启PHP7.2-FPM来重启 sudo service php7.2-fpm restart

就这样!


那个sudo service php7.2-fpm restart救了我的命。 - sanjeev shetty

7

我正在使用Nginx,我的解决方法是重新启动php-fpm。

重新启动Nginx没有任何作用。

sudo service php7.2-fpm restart

1
这对我有用!谢谢!我正在使用Apache,最近转移到了php-fpm - 我不知道它是一个单独的服务! - david_nash

6

我发现在 Fedora 29 上重启 httpd 服务不能加载已修改的配置文件 (/etc/php.ini)。值得一提的是列出所有 systemd 单位,并使用 grep 命令筛选字符串 "php":

# systemctl list-unit-files | grep php
php-fpm.service

我遇到的问题通过重新启动php-fpm得以解决:

# systemctl restart php-fpm

4

在花费数小时阅读论坛后,我已经找到了解决方法:

cd /etc/php
find . -name "*.ini" | xargs grep -il upload_max_filesize
./7.1/apache2/php.ini
./7.1/mods-available/better.ini
./7.1/cgi/php.ini
./7.1/cli/php.ini
./7.1/phpdbg/php.ini
./7.1/fpm/conf.d/20-better.ini
./7.1/fpm/php.ini
./7.1/embed/php.ini

./7.1/fpm/conf.d/20-better.ini 中的 upload_max_filesize 更改,然后

/etc/init.d/php7.1-fpm restart

现在phpinfo报告:upload_max_filesize 10G 10G

希望这可以帮到你。


这是最好的答案,当你不确定你拥有的版本/配置时。 - Yassin

4

我也遇到了这个问题!

如果你正在使用php-fpm服务,则需要找到php-fpm.conf文件并添加以下代码行:

php_admin_value[upload_max_filesize] = 100M

如果要更改其他类型的值,请按照相应格式进行修改。

#just for example
php_flag[display_errors] = off
php_admin_value[error_log] = /var/log/fpm-php.www.log
php_admin_flag[log_errors] = on

1
这应该被选择为最佳答案,无论谁使用 FPM sock 运行。 - Joseph Miller

1

大多数人忘记通过终端重启他们的php,这就是为什么它不起作用的原因,如果你认为你已经做了一切正确的事情,请确保重新启动你的php和服务器。


1
在我的情况下,我编辑了错误的文件。原来我应该修改这个文件/etc/php/7.2/apache2/php.ini。这样做之后,它就运行起来了!

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接