我怎样才能让phpunit不能吞下error_log输出?

时间:2014-08-08 00:31:53

标签: php phpunit error-log

从phpunit中运行error_log()时,它不会写入正常的错误日志文件。我想停止它,以便它写入文件,好像我是通过浏览器访问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版本5.5,phpunit版本3.7。在osx和ubunutu上都会发生这种情况。这不会发生在Windows 7上。

2 个答案:

答案 0 :(得分:4)

所以这被证明是从命令行运行的php没有记录错误(讨论here)的症状,并通过确保执行phpunit的用户对错误日志具有写权限来解决。

同样在游戏中,当从命令行调用时,php使用了不同的ini文件(讨论here)。

答案 1 :(得分:1)

由PHPUnit执行时,error_log()函数将写入PHP STDERR,而不是项目本身的配置。这是由PHPUnit定义的错误处理程序导致的。 可以使用自定义错误处理程序更改此默认行为。