Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/258.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使phpunit不吞咽错误日志输出?_Php_Phpunit_Error Log - Fatal编程技术网

如何使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

当从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 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测试将写入控制台,但不会写入错误日志文件。