我刚刚在mac-osx 10.7中通过pear安装了phpunit,除了内存限制错误(xdebug为报告启用)外,一切都很好。
我试图将-d memory_limit=512M
参数添加到phpunit,但它没有应用,因为在第一个错误中,我添加了var_dump(ini_get('memory_limit')); exit;
,它打印字符串(3)"32M"
那么,为什么它没有被应用呢?
除此之外,如果我运行
php -d memory_limit=256M -r "echo ini_get('memory_limit');"
它与"256M"相呼应
phpunit是否可能不执行相同的php?
对于那些到达该线程并需要获得phpunit.xml
配置文件的配置的人:
<php>
<ini name="memory_limit" value="512M" />
</php>
有关"设置PHP INI设置、常量和全局变量"部分的更多信息,请访问https://phpunit.de/manual/6.5/en/appendixes.configuration.html
是的,您可以用phpunit -d
设置每个php选项,也可以用ini_set
设置。
您已经在phpunit错误跟踪器中打开了一个错误,但我在这里寻找更详细的答案
复制以显示其工作原理:
echo "<?php var_dump(ini_get('memory_limit')); " > foo.php
phpunit -d memory_limit=12M --bootstrap foo.php
产品:
string(3) "12M"
PHPUnit 3.6.5 by Sebastian Bergmann.
但是phpunit在运行第一个测试之前只应用此选项一次!
因此,您的代码很可能将内存限制更改回32M
,这是phpunit无法"修复"的。
在phpunit.xml
文件中设置内存限制也是如此。
如果你不介意测试的速度,你会发现这个线程非常有用,因为它可以更好地处理应用程序的内存。
基本上;在phpunit.xml
中,在<phpunit>
标签下,将processIsolation
设置为true
,即
<?xml version="1.0" encoding="UTF-8"?>
<phpunit
...
processIsolation="true"
... >
或者,
您可以在<php>
标签下完全禁用内存限制,将memory_limit
设置为-1
,即
<php>
...
<ini name="memory_limit" value="-1"/>
...