温馨提示×

怎样分析ubuntu php日志

小樊
37
2026-09-06 14:26:55
栏目: 编程语言

在 Ubuntu 上分析 PHP 日志,通常分为 定位日志文件 → 选择分析方式 → 结合常见问题排查 三步。下面系统性地说一下。


一、先找到 PHP 日志在哪里

1. PHP 错误日志(最常见)

PHP 本身的错误日志位置由 php.ini 决定:

php --ini

查看:

error_log = /var/log/php/php-error.log

或:

error_log = /var/log/apache2/php_errors.log

如果没有设置,PHP 错误可能会写入 Web 服务器日志


2. Apache + PHP

/var/log/apache2/error.log
/var/log/apache2/access.log

查看:

tail -f /var/log/apache2/error.log

3. Nginx + PHP-FPM

PHP-FPM 日志:

/var/log/php-fpm.log
/var/log/php8.1-fpm.log   # 版本相关

Nginx 错误日志:

/var/log/nginx/error.log
/var/log/nginx/access.log

4. 应用自身日志(Laravel / ThinkPHP 等)

常见位置:

/var/www/html/storage/logs/laravel.log
/var/www/html/runtime/log/

二、常用日志分析命令

1. 实时查看

tail -f /var/log/php/php-error.log

2. 查看错误级别

grep -E "Fatal error|Parse error|Warning|Notice" /var/log/php/php-error.log

3. 按时间筛选

grep "2026-01-21" /var/log/php/php-error.log

4. 统计错误类型

awk '{print $1}' /var/log/php/php-error.log | sort | uniq -c | sort -nr

5. 结合 access 日志分析

grep "500" /var/log/nginx/access.log

三、典型 PHP 日志问题解读

1. Fatal error

PHP Fatal error: Uncaught Error: Class 'X' not found

→ 类未加载 / autoload 问题

2. Permission denied

failed to open stream: Permission denied

→ 文件权限或 www-data 用户问题

3. Memory exhausted

Allowed memory size exhausted

→ 调整 memory_limit

4. Execution timeout

Maximum execution time exceeded

→ 脚本太慢或死循环


四、开启/优化 PHP 日志(很重要)

编辑:

sudo nano /etc/php/8.1/cli/php.ini
# 或 fpm 版本
sudo nano /etc/php/8.1/fpm/php.ini

建议配置:

display_errors = Off
log_errors = On
error_log = /var/log/php/php-error.log
error_reporting = E_ALL

重启:

sudo systemctl restart php8.1-fpm
sudo systemctl restart nginx

五、进阶分析工具(可选)

  • goaccess:可视化 access 日志
  • lnav:日志聚合查看
  • ELK / Grafana Loki:生产环境集中日志

如果你愿意,可以:

  • 贴一段 具体 PHP 日志
  • 说明是 Apache / Nginx / CLI
  • 或说明用的 框架(Laravel / ThinkPHP 等)

我可以直接帮你分析具体错误原因。

0