PHP内置服务器错误日志位置

时间:2014-11-25 08:53:39

标签: php macos terminal tail

我不知道有没有?但是内置在Web服务器中的PHP也将其错误日志保存在文件中吗?用于拖尾目的,例如在apache中创建虚拟主机时。

更新:我正在使用mac osx

6 个答案:

答案 0 :(得分:19)

默认情况下,内置的网络服务器不会记录任何地方,所以你需要提供一个php.ini来自定义它。例如,如果您使用以下内容创建了名为php.ini的文件:

error_log = /Users/me/test.log
log_errors = on
date.timezone = UTC

然后你可以像这样启动PHP的内置网络服务器:

php -S 127.0.0.1:8080 -c php.ini

并且error_log()调用将记录到您指定的文件中。

答案 1 :(得分:7)

是的,PHP内置了错误日志功能。

PHP会自动将错误记录到此文件中。

如果要记录错误,请使用函数error_log()

文件的位置根据环境而变化。

e.g。

在Ubuntu 12.04中,它的

var/log/php_errors.log

在XAMPP窗口中,

\xampp\php\logs\php_errors.log

在Mac OS中,

/var/log/apache2/php_errors.log

答案 2 :(得分:1)

在macOS上使用PHP内置服务器时,您需要在error_log配置文件(php.ini)中指定php -i | grep php.ini

如果您决定使用syslog(而不是日志文件),例如:

error_log = syslog

然后要转储日志,您可以在macOS上使用log命令,例如

log stream --predicate 'processImagePath contains "php"'

否则请使用一些特定的文件路径作为错误日志(例如/usr/local/var/log/php-error.log)。

答案 3 :(得分:1)

要更新 Mac OS X High Sierra(10.13.5):这对我有用,无需更改任何PHP默认值。只需使用

error_log('*** notice this***');

并显示错误日志:

tail -f /var/log/apache2/error_log

答案 4 :(得分:0)

我主要了解linux,但是AFAIK在可以运行php的任何系统上都起作用。我最近花了不合理的时间让linux在2009年的“过时”的Macmini上运行。我不知道有人会容忍这种过时的行为。 Android真是太糟糕了,它隐藏在“基于linux”的废话后面。我不知道要花多少律师?当然,GPL并没有透露有关硬件的任何信息!多亏了他们,在接下来的十年中,当移动设备不可避免地取代笔记本电脑和台式机时,免费软件背后的思想威胁将被消除。他们应该put that kind of engineeringto work in consumer smoke alarm technology.

无论如何,足够了。我将尝试回到主题上,并教给您如何以一种可以为将来提供工具来完成类似的不同任务的方式。就像那句古老的谚语说的那样:“教一个人去钓鱼,再也不能把他卖给他去钓鱼”

如果man [command][command] --help不起作用,我总是喜欢以--help-h开头,尝试传递无效的输入,通常会得到它说。在这一步要小心,很容易使手册页停留几个小时,不要忘记您可能承担的任何时间义务。

php --help 

找到设置ini变量的选项:

-d foo[=bar]     Define INI entry foo with value 'bar'

通过阅读示例php.ini,我们找到了感兴趣的设置。


; error_reporting
;   Default Value: E_ALL & ~E_NOTICE & ~E_STRICT & ~E_DEPRECATED
;   Development Value: E_ALL
;   Production Value: E_ALL & ~E_DEPRECATED & ~E_STRICT

///

; Log errors to specified file. PHP's default behavior is to leave this value
; empty.
; http://php.net/error-log
; Example:
;error_log = php_errors.log
; Log errors to syslog (Event Log on Windows).
;error_log = syslog

所有其他默认设置看起来都很好,所以...让我们尝试一下:

php -d error_reporting=E_ALL -d error_log=/desired/path/to/error.log -S 0.0.0.0:9999  

您可能会注意到从此处将日志打印到stderr。通过在上述命令的末尾添加2> /path/to/error.log Alternatively, you could redirect that。比较简单,但是您将不会了解用于设置php.ini和-d中的值以使用自定义文件的-c选项,但是您会了解到输出重定向的知识,在众多应用中,这是一个更为重要的概念。

答案 5 :(得分:-2)

如果您使用的是Mac OS或Ubuntu,可以通过这种方式轻松查看错误日志

import { BrowserModule } from '@angular/platform-browser';
import { NgModule } from '@angular/core';

import { AppRoutingModule } from './app-routing.module';
import { AppComponent } from './app.component';

@NgModule({
  declarations: [
    AppComponent
  ],
  imports: [
    BrowserModule,
    AppRoutingModule
  ],
  providers: [],
  bootstrap: [AppComponent]
})
export class AppModule { }

这将为您提供实时错误日志,或者您可以使用,这将提供最新的错误日志

tail -f /var/log/apache2/error_log