You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在本地Valet环境中配置Monolog输出至php://stderr的日志位置问题

Laravel Valet环境下php://stderr的日志位置

在Laravel Valet的运行架构里,PHP通过php-fpm进程提供服务,php://stderr的输出会被nginx捕获,最终写入**~/.config/valet/Log/nginx-error.log**——就是你找到的那个nginx错误日志文件。

为什么和error_log()的输出位置不同?

  • error_log()的内容直接写入php-fpm自身的日志文件(php-fpm.log),这是PHP默认配置的错误日志通道;
  • 而php://stderr属于php-fpm进程的标准错误流,Valet的nginx作为反向代理,会统一收集php-fpm进程的stderr/stdout输出,并存入自己的错误日志。

快速验证方法

在项目代码里添加一行测试代码:

fwrite(fopen('php://stderr', 'w'), '测试stderr日志内容');

访问项目后打开~/.config/valet/Log/nginx-error.log,就能找到这条测试日志。

关于Monolog配置的补充

如果配置Monolog后没看到日志,检查Handler是否正确指向php://stderr,基础配置示例如下:

use Monolog\Logger;
use Monolog\Handler\StreamHandler;

$logger = new Logger('project_log');
$logger->pushHandler(new StreamHandler('php://stderr', Logger::WARNING));
$logger->warning('这条日志会出现在nginx-error.log里');

内容的提问来源于stack exchange,提问作者Sonny

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.24 17:07:04