温馨提示×

centos php日志能否记录sql

小樊
37
2026-09-24 08:48:16
栏目: 云计算

在 CentOS 上,PHP 本身默认不会记录 SQL 语句,是否能记录 SQL,取决于你用的 PHP 运行方式、框架、数据库扩展和日志配置。下面分情况说明:


一、PHP 原生(无框架)能否记录 SQL?

默认不能,需要你自己在代码里写日志。

示例(PDO):

$sql = "SELECT * FROM user WHERE id = ?";
error_log($sql); // 写入 PHP 错误日志

或写入文件:

file_put_contents('/var/log/php_sql.log', $sql . PHP_EOL, FILE_APPEND);

✅ 结论:
PHP 原生不自动记录 SQL,只能手动记录


二、使用框架(常见情况)

1️⃣ Laravel

Laravel 可以非常方便地记录 SQL

方法一:配置日志

.env

LOG_CHANNEL=stack

app/Providers/AppServiceProvider.php

\DB::listen(function ($query) {
    \Log::info($query->sql, $query->bindings);
});

日志位置:

storage/logs/laravel.log

方法二:开启慢查询(MySQL 层)

SET GLOBAL slow_query_log = 'ON';

2️⃣ ThinkPHP

ThinkPHP 自带 SQL 日志

日志位置:

runtime/log/

开启:

'app_debug' => true

三、通过 MySQL 本身记录 SQL(推荐)

最可靠、与 PHP 无关

1️⃣ 通用查询日志(记录所有 SQL)

SET GLOBAL general_log = 'ON';
SET GLOBAL general_log_file = '/var/log/mysql/general.log';

⚠️ 性能影响大,仅调试用


2️⃣ 慢查询日志(生产推荐)

# /etc/my.cnf
slow_query_log = 1
slow_query_log_file = /var/log/mysql/slow.log
long_query_time = 1

四、CentOS 日志位置参考

/var/log/php-fpm/error.log
/var/log/httpd/error_log
/var/log/nginx/error.log
/var/log/mysql/slow.log

五、总结

方式 是否记录 SQL 说明
PHP 原生 ❌ 需手写日志
Laravel ✅ DB::listen
ThinkPHP ✅ 自动
MySQL 日志 ✅✅ 最完整

如果你能告诉我:

  • PHP 版本
  • 是否用框架(Laravel / TP / 原生)
  • Web 服务(Nginx / Apache)

我可以给你 精确配置方案。

0 踩