24

我刚刚在 mac osx 10.7 中通过 pear 安装了 phpunit,一切正常,除了出现内存限制错误(为报告启用了 xdebug)。

我试图将-d memory_limit=512M参数添加到 phpunit 但它没有应用,因为在第一个错误中,我添加了var_dump(ini_get('memory_limit')); exit;它并打印 string(3) "32M"

那么,为什么它没有被应用呢?

除此之外,如果我跑

php -d memory_limit=256M -r "echo ini_get('memory_limit');"

它呼应“256M”

phpunit是否有可能没有执行相同的php?

4

3 回答 3

33

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 只在第一次测试运行之前应用这个选项一次!

因此,您的代码很可能在某处将内存限制更改回32Mphpunit 无法“修复”的内容。

设置phpunit.xml文件中的内存限制也是如此。

于 2012-01-10T22:29:02.947 回答
32

对于那些到达这个线程并且需要获取phpunit.xml配置文件的配置的人:

<php>
  <ini name="memory_limit" value="512M" />
</php>

有关“设置 PHP INI 设置、常量和全局变量”部分的更多信息,请访问 https://phpunit.de/manual/6.5/en/appendixes.configuration.html

于 2018-11-21T13:40:39.567 回答
13

如果您不介意测试的速度,发现这个线程非常有用,因为它可以更好地处理您的应用程序的内存。

基本上; 在您的phpunit.xml, <phpunit>标签下,将 设置processIsolationtrueie

<?xml version="1.0" encoding="UTF-8"?>
<phpunit 
         ...
         processIsolation="true"
         ... >

或者,

您可以在 <php>标签下完全禁用内存限制,将其设置memory_limit-1ie

<php>
        ...
        <ini name="memory_limit" value="-1"/>
        ...

于 2020-04-20T08:27:05.317 回答