温馨提示×

ubuntu php日志乱码怎么解

小樊
40
2026-10-26 23:45:12
栏目: 编程语言

Ubuntu 下 PHP 日志出现乱码,通常不是 PHP 本身的问题,而是字符编码不一致导致的。下面按常见原因给你一套排查和解决思路。


一、先确认乱码出现在哪里

  1. 终端看日志乱码
tail -f /var/log/php_errors.log

→ 可能是终端编码问题

  1. 日志文件本身是乱码
file -i php_errors.log

→ 看文件编码

  1. 浏览器 / 页面正常,日志乱码 → 基本是 PHP 输出编码问题

二、最常见原因 & 解决方法

1️⃣ PHP 文件编码不是 UTF-8(最常见)

✅ 解决:

  • 用编辑器把 PHP 文件改成 UTF-8 无 BOM
    • VS Code:右下角 → 编码 → 另存为 UTF-8
    • vim:
      :set fileencoding=utf-8
      :wq
      

2️⃣ PHP 内部未设置默认编码

在 php.ini 中设置:

default_charset = "UTF-8"

Ubuntu 常见位置:

/etc/php/8.1/cli/php.ini
/etc/php/8.1/fpm/php.ini

修改后重启:

sudo systemctl restart php8.1-fpm

3️⃣ 日志函数输出中文乱码(error_log / syslog)

如果你这样写:

error_log("中文日志");

✅ 推荐改成:

error_log(mb_convert_encoding("中文日志", "UTF-8", "auto"));

或:

error_log(iconv("UTF-8", "UTF-8//IGNORE", "中文日志"));

4️⃣ Ubuntu 系统语言不是 UTF-8

检查:

locale

如果不是 UTF-8:

sudo apt install locales
sudo dpkg-reconfigure locales

选中:

en_US.UTF-8

或

zh_CN.UTF-8

然后:

export LANG=en_US.UTF-8

5️⃣ Nginx / Apache 环境乱码

Nginx:

charset utf-8;

Apache:

AddDefaultCharset UTF-8

6️⃣ 查看日志用错工具

❌ 错误:

cat php.log

✅ 推荐:

less -r php.log
# 或
tail -f php.log

三、推荐的标准做法(总结)

✅ PHP 文件:UTF-8 无 BOM
✅ php.ini:default_charset = UTF-8
✅ 系统:LANG=en_US.UTF-8
✅ 日志:统一 UTF-8
✅ Web 服务:声明 charset


如果你愿意,可以把:

  • PHP 版本
  • 日志内容截图或原文
  • 使用方式(CLI / FPM / Nginx)

发出来,我可以精准定位是哪一层乱码。

0 踩