首页 > 解决方案 > Mac 10.15 上的 php cli 在哪里记录错误

问题描述

我快速而肮脏地开发了一个本地脚本,并让它在命令行上运行。我没有安装服务器。

我的 php ini 位于 /usr/local/etc/php/7.4/php.ini

我通过使用激活了错误日志

error_reporting = E_ALL
display_errors = On
log_errors = On
error_log = /var/log/php_errors.log

我保存了更改,但没有找到写入 /var/log/php_errors.log 的日志

我该怎么做才能让我的错误记录在文件中?

的输出

$ php --ini
Configuration File (php.ini) Path: /usr/local/etc/php/7.4
Loaded Configuration File:         /usr/local/etc/php/7.4/php.ini
Scan for additional .ini files in: /usr/local/etc/php/7.4/conf.d
Additional .ini files parsed:      /usr/local/etc/php/7.4/conf.d/ext-opcache.ini


$ which php
/usr/local/bin/php

标签: phpmacoscommand-line-interface

解决方案


我的理解是 php cli 以与 bash 脚本相同的方式向命令行输出错误。因此,您可以以相同的方式将错误输出到您自己的日志文件中。

这是一个简单的脚本文件error_test.php,它有两个命令。首先回显一个字符串 - 第二个回显一个未定义的变量,这将产生一个错误:

<?php

echo "hello\n";
echo $test;

运行脚本为

php error_test.php

它将输出以下内容:

hello
PHP Notice:  Undefined variable: test in /home/phi/Projects/sandbox/error_test.php on line 3

像 bash 脚本一样,我们可以将 stderr 输出重定向到一个文件2>

php error_test.php 2> error.log
cat error.log

每次运行命令时都会替换日志文件。要将错误附加到日志文件,请使用2>>.

php error_test.php 2>> error.log

要忽略错误,请重定向到/dev/null

php error_test.php 2>> /dev/null

推荐阅读