1. 首页 > 技术教程 > 正文

PHP 环境调优:修改上传限制、内存占用与错误日志

PHP 环境调优:修改上传限制、内存占用与错误日志

如果你用的是 WordPress 或其他 PHP 应用,上传大文件时提示“文件过大”,或者网站动不动就 502 白屏,大概率是 PHP 的默认配置没改。主机选这篇 Linux 教程直接告诉你,怎么调上传限制、内存占用和错误日志,操作完就能见效。

PHP 环境调优:修改上传限制、内存占用与错误日志的图片

先找到 PHP 配置文件

用哪个 php.ini 文件?

很多新手在服务器上乱翻,以为只有一个 php.ini。其实不同环境位置不一样,比如:

查看当前 PHP 加载的配置文件路径

php -i | grep “Loaded Configuration File”

输出类似: /etc/php/8.1/cli/php.ini

如果是 Nginx + FPM,要改 /etc/php/8.1/fpm/php.ini

**别问为什么,FPM 和 CLI 的配置是分开的**。改了 CLI 的,网页端不生效。老手习惯直接改 FPM 的,因为大部分场景是网页报错。

修改前备份原文件

sudo cp /etc/php/8.1/fpm/php.ini /etc/php/8.1/fpm/php.ini.bak

备份一下,万一改崩了能还原

修改上传文件大小限制

找到 upload_max_filesize 和 post_max_size

默认一般只有 2M,传个主题包都费劲。用 vim 或 nano 打开 php.ini,搜索这两个参数:

ini
; 修改上传文件大小上限,单位可以是 M、K、G
upload_max_filesize = 64M
; POST 数据大小必须大于上传限制,建议设为 2 倍
post_max_size = 128M

**注意**:如果 post_max_size 小于 upload_max_filesize,上传照样失败。这是老手才知道的坑。

别忘了 max_execution_time

上传大文件时,PHP 执行时间不够也会中断。建议调大:

ini
max_execution_time = 300
; 单位是秒,300 秒够上传几百 MB 的文件了

调整 PHP 内存占用

修改 memory_limit

网站跑得慢、插件多,经常是因为内存不够。WordPress 场景下,128M 是最低底线:

ini
memory_limit = 256M
; 如果跑大型应用(如 Magento),建议 512M 或 1G

**万一报错了别慌**:如果你改了 memory_limit 后网站还是白屏,先检查是不是有插件内存泄漏。用 `top` 或者 `htop` 看 PHP-FPM 进程的内存占用,如果单个进程吃满 256M,说明代码有问题。

修改后重启 PHP-FPM

sudo systemctl restart php8.1-fpm

或者 php7.4-fpm,看你装的版本

开启并优化错误日志

打开 PHP 错误日志

默认错误日志是关的,网站出问题只给个白屏。实战中必须开:

ini
; 打开错误显示(开发环境用,生产环境建议关掉)
display_errors = Off
; 开启错误日志记录
log_errors = On
; 指定日志文件路径
error_log = /var/log/php_errors.log

**老鸟叮嘱**:生产环境一定把 `display_errors` 设为 Off,否则报错信息会暴露路径、数据库密码等敏感信息。想排查就去看日志。

设置日志级别

默认记录所有错误,日志会疯长。可以按需调整:

ini
; 只记录警告以上级别的错误
error_reporting = E_ALL & ~E_NOTICE & ~E_DEPRECATED
; 或者只记录致命错误
; error_reporting = E_ERROR | E_PARSE

查看错误日志

实时查看最新错误

tail -f /var/log/php_errors.log

搜索特定错误

grep “Fatal error” /var/log/php_errors.log

老鸟叮嘱

**改完 php.ini 一定要重启 PHP-FPM**,不然配置不生效。很多人改了参数后找半天问题,结果发现没重启。另外,如果你用的是宝塔、LNMP 一键包之类,它们有自己的配置覆盖机制,建议在面板里改,或者确认改的是哪个 php.ini。

FAQ

Q:PHP 上传文件大小改了,但 WordPress 还是提示“文件过大”怎么办?

先检查 WordPress 后台的媒体设置,最大上传限制是否和 PHP 一致。另外,Nginx 的 `client_max_body_size` 也要改,默认 1M,改成和 PHP 一致:

nginx
client_max_body_size 64M;

Q:修改 memory_limit 后网站变慢是为什么?

不是调大内存就一定快。如果 PHP 进程吃满内存,说明代码效率低,比如循环没优化、缓存没开。建议先开 OPcache,再检查插件。

Q:PHP 错误日志文件太大怎么处理?

用 logrotate 自动切割,或者定期清空。生产环境建议只记录错误级别以上的日志,减少写入量。

Q:Linux 小白可以直接用 root 账号操作吗?

不建议。用 `sudo` 执行修改命令,避免误操作导致系统崩溃。如果非要用 root,至少先备份 php.ini。

Q:修改 php.ini 后需要重启 Nginx 吗?

如果只改 PHP 相关配置,重启 PHP-FPM 就行。但如果你改了 Nginx 的 `client_max_body_size`,必须重启 Nginx:

sudo systemctl restart nginx

Q:BBR 开启后上传速度没有明显提升,和 PHP 配置有关吗?

BBR 加速的是 TCP 传输,和 PHP 上传限制无关。上传慢通常是 Nginx 或 PHP 的 `max_execution_time` 设太小,或者网络带宽瓶颈。先排查这些。

转载请注明出处:https://www.zhujixuan.com/jishujiaocheng/9455.html 商家投稿邮箱:zhujixuanblog@qq.com