Docker环境运行Larastan(phpstan)遇内存不足及设置失败问题求助
解决Laravel项目中PHPStan(Larastan)内存不足问题
问题背景
在基于php:8.1.6-apache的Docker环境中运行Laravel 10.8项目的nunomaduro/larastan 2.6.3时,出现内存不足错误。尝试通过控制台命令调整内存限制时,出现以下报错:
root@3ab9f820c86d:/var/www/PostsTagsCRUDTest_DOCKER_ROOT# ./vendor/bin/phpstan analyse --memory-limit 1M > phpstan.txt Warning: Failed to set memory limit to 1048576 bytes (Current memory usage is 41943040 bytes) in phar:///var/www/PostsTagsCRUDTest_DOCKER_ROOT/vendor/phpstan/phpstan/phpstan.phar/src/Command/CommandHelper.php on line 101 Memory limit "1M" cannot be set. root@3ab9f820c86d:/var/www/PostsTagsCRUDTest_DOCKER_ROOT# ./vendor/bin/phpstan analyse --memory-limit 0.5M > phpstan.txt Invalid memory limit format "0.5M". For more details see free(1). root@3ab9f820c86d:/var/www/PostsTagsCRUDTest_DOCKER_ROOT# free total used free shared buff/cache available Mem: 8057500 6022512 483432 201228 1551556 1532956 Swap: 2104476 1424128 680348
已在Docker项目的virtualhost.conf中配置:
php_value memory_limit 4048M
解决办法
设置合理的PHPStan内存限制
之前设置的1M、0.5M属于错误的过小值,PHPStan分析代码需要足够内存。直接设置足够大的限制,或放开内存限制:# 设置2G内存限制 ./vendor/bin/phpstan analyse --memory-limit 2G > phpstan.txt # 完全放开内存限制 ./vendor/bin/phpstan analyse --memory-limit -1 > phpstan.txt修改CLI模式的PHP配置
Apache的virtualhost.conf配置仅对Web请求生效,CLI模式下的PHP使用独立的配置文件(通常为php-cli.ini):- 查找CLI配置文件路径:
php -i | grep "Loaded Configuration File" - 编辑该文件,将
memory_limit改为2G或-1,保存后重新运行PHPStan命令即可。
- 查找CLI配置文件路径:
缩小PHPStan分析范围
如果服务器内存紧张,可限定分析核心代码目录,避免扫描无关文件:./vendor/bin/phpstan analyse app/ --memory-limit 1G > phpstan.txt也可以在项目的
phpstan.neon配置文件中通过paths参数指定分析范围,进一步减少内存占用。调整Docker容器内存配额
从free输出看,宿主机还有可用内存,但容器可能被限制了内存。启动容器时增加内存分配:docker run --memory=4g [其他容器参数]
内容的提问来源于stack exchange,提问作者mstdmstd
相关产品推荐
相关产品推荐

