NewRelic PHP 代理 Laravel newrelic.transaction_tracer.record_sql = "raw" 显示?而不是价值

问题描述 投票:0回答:1

我已在 Laravel 开发中将 NewRelic PHP 代理设置为 newrelic.transaction_tracer.record_sql = “raw”,但这些值以“?”的形式传入 APM而不是值。

还有其他人遇到这个问题吗?如果是这样,你是如何解决的?

当我将其设置为“关闭”时,SQL 将按预期停止运行。设置为“混淆”也有“?”正如预期的那样,通过而不是值。但再次将其设置为“raw”仍然有“?”通过 SQL 而不是值来实现。

我们有一个 CodeIgniter PHP 设置,当将此配置设置为“原始”时,该值确实会出现。

newrelic.high_security 未设置,因此默认为 false。

我尝试将 newrelic.framework 显式设置为“laravel”,但没有修复它。

已验证我们使用的是最新的 NewRelic 代理和 PHP 次要版本:

  • PHP 版本 8.0.30 (cli)(构建时间:2023 年 9 月 2 日 08:05:13)(NTS)
  • New Relic PHP 代理版本 10.14.0.3-1563e8045968
php laravel newrelic
1个回答
0
投票

不幸的是,在 Laravel 或 New Relic PHP 代理中没有直接的方法来改变这种行为。显示带有实际值的原始 SQL 查询可能会暴露敏感数据并构成安全风险。但如果您需要查看实际值以进行调试,您可以考虑在 Laravel 应用程序中记录查询。 Laravel 提供了多种记录查询的方法。

但是您可以在您的

AppServiceProvider

中使用查询侦听器
<?php
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Log;

public function boot()
{
    DB::listen(function ($query) {
        Log::info(
            $query->sql,
            $query->bindings,
            $query->time
        );
    });
}
?>

这就是我的全部,祝你好运。

© www.soinside.com 2019 - 2024. All rights reserved.