php调试

太阳作者太阳
原创内容采用 CC-4.0 协议发布,转载请注明出处
PHP调试浏览器控制台

在控制台中打印变量

需要同时观察 PHP 生成的页面和服务端变量时,可以把变量编码成 JavaScript 字面量,再输出到浏览器开发者工具的 Console。下面的写法不会把数组或对象再次包成字符串,并使用 JSON_HEX_* 选项降低变量内容提前结束 <script> 标签或破坏引号的风险:

echo '<script>console.log('
    . json_encode(
        $attr,
        JSON_HEX_TAG | JSON_HEX_AMP | JSON_HEX_APOS | JSON_HEX_QUOT
    )
    . ');</script>';

打开浏览器开发者工具后刷新页面,就能在 Console 中查看 $attr。如果页面有缓存,应先确认本次请求确实执行了这段 PHP。

什么时候不该输出到浏览器

这种方法只适合本地开发或临时排查,因为输出内容会进入返回给用户的 HTML。密码、令牌、Cookie、数据库连接信息和用户隐私数据都不应这样打印,生产环境也不应保留调试输出。

只需要在服务端查看变量时,优先写入受控日志:

error_log(print_r($attr, true));

日志文件的位置由 PHP-FPM、Web 服务器或容器配置决定。排查完成后删除临时代码,避免额外输出破坏 JSON 接口、响应头或页面缓存。