如何使phpunit不吞咽错误日志输出?
当从phpunit中运行如何使phpunit不吞咽错误日志输出?,php,phpunit,error-log,Php,Phpunit,Error Log,当从phpunit中运行错误日志()时,它不会写入正常的错误日志文件。我想停止这个操作,这样它就可以像通过浏览器访问PHP一样写入文件 <?php class exampleTest extends PHPUnit_Framework_TestCase { public function testSomething() { error_log('This will not be written to the error log, but I wish it wa
错误日志()时,它不会写入正常的错误日志文件。我想停止这个操作,这样它就可以像通过浏览器访问PHP一样写入文件
<?php
class exampleTest extends PHPUnit_Framework_TestCase {
public function testSomething() {
error_log('This will not be written to the error log, but I wish it was!');
$this->assertEquals(2, 1+1);
}
}
因此,这是从命令行运行php时未记录错误的症状(已讨论),并通过确保执行phpunit的用户具有对错误日志的写入权限来解决
从命令行调用时,php使用了不同的ini文件(已讨论)。当由PHPUnit执行时,error_log()函数将写入php STDERR,而不是项目本身的配置。这是由PHPUnit定义的错误处理程序导致的。
可以使用自定义错误处理程序更改此默认行为。根据上面的说明判断,如果您不将消息以外的任何参数传递到error\u log()
,它会将其保存到PHP系统记录器,很可能会在PHP安装的tmp文件夹中结束。如果您想将其保存到其他地方,您可以指定一个路径,如error_log(“您的消息”,3,“/path/to/log/file”)
使用log\u errors=On
和error\u log=“/var/log/php/php\u errors.log”
在my php.ini中,error\u log()写入该文件。然而,在PHP单元中,它不是。我不想为了解决phpunit而调整所有的错误日志调用。上面的测试在运行php5.5.3和phpunit4.2.0的ubuntu13.10上运行。您可能需要升级PHPUnit。在某些情况下,它会进行输出缓冲(多年来有所改变),但我不认为这会对写入日志文件造成什么影响。另外,var\u dump
(或assert)在测试中同时记录log\u错误
和error\u日志
,以确保它们符合您的预期。尝试使用上述phpunit 4.2测试将写入控制台,但不会写入错误日志文件。