【发布时间】:2020-03-14 10:09:01
【问题描述】:
我有两台服务器,一台是公共服务器,一台是我的开发服务器。
两者都有相同的操作系统版本(CentOS7.7),都使用相同的 php 设置(remi),都有相同的 php.ini,都安装了相同的软件包(加上版本!) - 除了一些非apache/php 相关的包(开发机器)它们几乎是相同的机器。
两者都用于记录所有 php 错误和 error_log() 到 php.ini 定义的 error_log 文件:“/var/log/php”。我刚刚更新到 php 7.3,除日志记录外,一切正常。现在开发机记录到php日志,而公共机记录到apache错误日志。
我不知道为什么会这样,我需要一些帮助。
在我设置的 php.ini 文件中的两台机器上:
display_errors = Off
display_startup_errors = Off
log_errors = On
html_errors = Off
error_log = /var/log/php
error_reporting = E_ALL & ~E_DEPRECATED & ~E_STRICT
两台机器上的权限都是正确的:
[user@PUBLIC /var/log/httpd] #>ls -la /var/log/php
-rw-rw----. 1 apachedaemon apachedaemon 199923 Nov 19 10:11 /var/log/php
[user@DEVELOPMENT /var/log] #>ls -la /var/log/php
-rw-rw---- 1 apachedaemon apachedaemon 158103 Nov 19 10:58 /var/log/php
在两台机器上我都有一个 php 脚本:
<?php
ini_set('log_errors','On');
ini_set('display_errors','Off');
ini_set('error_reporting', E_ALL );
error_log("---------------------------------- start error test");
error_log($NotDefined);
?>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
<title>php error test</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
</head>
<body>
<h1>php error test</h1>
<p> </p>
</body>
</html>
<?php
error_log("end");
?>
在公共机器上我看到了这个:
==> 1.2.3.4_ssl_error_log <==
[Tue Nov 19 10:43:07.257073 2019] [php7:notice] [pid 4462] [client W.X.Y.Z:44844] ---------------------------------- start error test
[Tue Nov 19 10:43:07.257126 2019] [php7:notice] [pid 4462] [client W.X.Y.Z:44844] PHP Notice: Undefined variable: NotDefined in /PATH/errorTest.php on line 8
[Tue Nov 19 10:43:07.257137 2019] [php7:notice] [pid 4462] [client W.X.Y.Z:44844]
[Tue Nov 19 10:43:07.257147 2019] [php7:notice] [pid 4462] [client W.X.Y.Z:44844] end
在开发机器上我看到了这个(这是正确的方法):
==> /var/log/php <==
[19-Nov-2019 10:30:28 Australia/Melbourne] ---------------------------------- start error test
[19-Nov-2019 10:30:28 Australia/Melbourne] PHP Notice: Undefined variable: NotDefined in /PATH/errorTest.php on line 8
[19-Nov-2019 10:30:28 Australia/Melbourne]
[19-Nov-2019 10:30:28 Australia/Melbourne] end
我做错了什么? 为什么一台服务器记录到php错误日志,而另一台服务器记录到apache错误日志?
这很烦人,因为所有 php 错误日志消息都到处都是,而不是像升级到 php7.3 之前那样在一个日志文件中
请帮忙,谢谢。
【问题讨论】:
-
在您发布的脚本中,您初始化
$NotDefined? -
@AlbertoSinigaglia 这篇文章/问题的全部要点,我需要提出一个错误来让它记录......
-
您收到一个错误,因为 error_log 作为第一个参数需要一个字符串,并且您向他传递了一个从未初始化过的变量,所以它是一个未定义的变量...您想用 error_log 做什么($未定义)?
-
我知道!我想要一个错误!我需要弄清楚为什么 PHP 错误在生产和开发服务器上的显示方式不同。在生产中,它们最终出现在 apache 错误日志中,而在开发服务器上,它们最终出现在 php 错误日志中!
-
在你的 php.ini 上你应该有这个
error_log = /var/log/php-scripts.log告诉error_log函数将日志放在哪里