我看了 https://www.workerman.net/q/7564 并根据walkor大佬的建议,在 support/helper.php 中定义了:
function env($key, $default = null) {
static $env_config = [];
if (!$env_config) {
$env_config = include config_path().'/.env';
}
return $env_config[$key]??$default;
}
来读取 .env 配置内容,其他的配置文件(比如 redis.php、database.php 使用都没问题,就是在 app.php 中使用:
return [
'debug' => env('debug', false),
。。。
];
时会导致内存无限增长,然后服务退出,请问如何解决呢?谢谢~
发下报错,发全
Active code page: 65001
F:_Projects\ManagementPlatform\Server\webman>php windows.php
VirtualAlloc() failed: [0x00000008] 内存资源不足,无法处理此命令。
VirtualFree() failed: [0x000001e7] 试图访问无效的地址。
VirtualAlloc() failed: [0x00000008] 内存资源不足,无法处理此命令。
VirtualFree() failed: [0x000001e7] 试图访问无效的地址。
PHP Fatal error: Out of memory (allocated 1849688064) (tried to allocate 8192 bytes) in F:_Projects\ManagementPlatform\Server\webman\envs.php on line 4
Fatal error: Out of memory (allocated 1849688064) (tried to allocate 8192 bytes) in F:_Projects\ManagementPlatform\Server\webman\envs.php on line 4
谢谢大神~
php windows.php 后会停止10秒左右,内存一直往上飙,然后报错
我测试了一下,如果在app.php中调用env()方法,会无限载入 app.php 配置文件,我把 include config_path().'/.env'; 改为 include_once 或 require_once后问题解决了,虽然不知为何。。哈哈
猜测是 .env php里引用了app.php的配置,导致无限循环引用了。
谢谢大神, .env 里使用了 runtime_path() 函数,不过 app.php 只是返回一个数组(包含了 runtime_path 索引),这样也会循环调用么?不太明白。。。
runtime_path() 函数里会引用 app.php,所以循环引用了