温馨提示×

ubuntu php日志编码怎么调

小樊
43
2026-10-21 00:40:25
栏目: 编程语言

在 Ubuntu 上调整 PHP 日志编码(通常是让日志以 UTF‑8 输出,避免乱码),可以从 PHP 本身、Web 服务器、系统环境 三个方面入手。下面按常见场景说明。


一、PHP 错误日志编码(error_log)

1️⃣ 设置 PHP 默认字符集

编辑 php.ini(路径可能是 /etc/php/8.x/cli/php.ini 或 /etc/php/8.x/fpm/php.ini):

default_charset = "UTF-8"

重启 PHP:

sudo systemctl restart php8.x-fpm

2️⃣ 确保 locale 是 UTF‑8

查看当前 locale:

locale

如果不是 UTF‑8,设置:

sudo locale-gen en_US.UTF-8
sudo update-locale LANG=en_US.UTF-8

3️⃣ PHP 日志文件编码

PHP 日志本身不会自动转码,它写什么就存什么。

✅ 正确做法:

  • PHP 源码文件保存为 UTF‑8(无 BOM)
  • 日志内容本身是 UTF‑8
  • 日志文件自然就是 UTF‑8

查看日志编码:

file -i /var/log/php/php_error.log

二、Nginx / Apache 日志编码

Nginx

Nginx 日志默认按系统 locale 写。

确保:

locale

是 UTF‑8

如果还是乱码,可在 Nginx 配置中:

charset utf-8;

Apache

AddDefaultCharset UTF-8

三、CLI 模式 PHP 日志编码

CLI 模式下:

php -i | grep default_charset

并确保终端是 UTF‑8:

echo $LANG

四、常见坑总结

❌ 日志乱码通常不是 PHP 配置问题
✅ 而是:

  • 源码不是 UTF‑8
  • 系统是 GBK / ANSI
  • 终端 / 编辑器编码不一致

五、推荐标准配置(Ubuntu + PHP + Nginx)

default_charset = UTF-8
mbstring.internal_encoding = UTF-8
mbstring.http_output = UTF-8

系统:

LANG=en_US.UTF-8

如果你能告诉我:

  • PHP 版本
  • 是 CLI / FPM / Apache
  • 日志是 error_log 还是 access_log
  • 乱码是 中文还是特殊字符

我可以给你更精确的配置。

0 踩