是否可以在 php error_log 指令中或在系统/服务器端以其他方式使用 syslog facilities?
类似...
error_log = syslog:local4
error_log = syslog(LOG_LOCAL4)
使用 php fpm 我可以使用 fpm conf 中的 syslog.facility 指令进行设置,但是 php cli 呢?
谢谢
Php 默认系统日志的工具是“用户”(并且无法更改)
我在phi.ini中使用指令auto_prepend_file(该脚本必须位于include_path下)
auto_prepend_file = log.php
和
root@sp:/etc/php5/cli# cat /usr/share/php5/log.php
<?php
openlog('php-cli', 0, LOG_LOCAL4);
您可以通过在 CLI 或 Apache php.ini 文件中配置 error_log 内容来将其配置为转到 syslog;或者在您的 Apache 配置文件中以每个站点为基础。
例如,要配置所有网站登录到系统日志,请编辑以下文件:
/etc/php/7.4/apache2/php.ini
搜索,然后编辑以下默认注释掉的值:
error_log = syslog
syslog.ident = YOUR_IDENTIFIER
上述内容将导致 error_log() 调用被记录到“YOUR_IDENTIFIER.log”中。
或者,对于 PHP 命令行程序,您可以编辑:
/etc/php/7.4/php/php.ini
但是,在使用 Apache 时,您可能希望将日志记录到单独的文件中。 在这种情况下,您只需更新站点特定的 Apache 配置文件。
添加适当的目录部分,然后使用“php_value”和“php_admin_value”指令来设置这些值。 例如:
<VirtualHost *:80>
...
<Directory /path/to/website/>
php_value error_log syslog
php_admin_value syslog.ident YOUR_IDENTIFIER
</Directory>
...
</VirtualHost>
或者,您可以使用“PHPINIDir”指令使网站使用完全不同的“php.ini”文件。 例如:
<VirtualHost *.80>
...
PHPINIDir /etc/apache/my_website
...
</VirtualHost>
“my_website”目录包含经过适当编辑的“php.ini”副本。