Laravel运行php artisan serve时PHP内存耗尽错误求助
php artisan serve时PHP内存耗尽错误解决指导 问题概述
运行php artisan serve启动Laravel开发服务器时,出现PHP内存耗尽的致命错误,调整php.ini的memory_limit到512M后问题依旧。
错误信息
php artisan serve INFO Server running on [http://127.0.0.1:8000]. Press Ctrl+C to stop the server WARN PHP Fatal error: Allowed memory size of 536870912 bytes exhausted (tried to allocate 20480 bytes) in C:\projects\laravel\storage\framework\views\3013c4ad2c85349d3078c69a5161cf9c.php on line 96. WARN PHP Fatal error: Allowed memory size of 536870912 bytes exhausted (tried to allocate 888832 bytes) in C:\projects\laravel\vendor\spatie\ignition\src\ErrorPage\ErrorPageViewModel.php on line 104. 2023-11-04 15:33:26 .............................................................................................. ~ 15s 2023-11-04 15:33:26 ............................................................................................. ~ 133s
项目文件列表
Mode LastWriteTime Length Name ---- ------------- ------ ---- d----- 11/4/2023 2:50 PM .git d----- 11/4/2023 2:50 PM .vite d----- 11/4/2023 2:50 PM app d----- 11/4/2023 2:50 PM bootstrap d----- 11/4/2023 2:50 PM config d----- 11/4/2023 2:50 PM database d----- 11/4/2023 2:50 PM node_modules d----- 11/4/2023 2:50 PM public d----- 11/4/2023 2:50 PM resources d----- 11/4/2023 2:50 PM routes d----- 11/4/2023 2:50 PM storage d----- 11/4/2023 2:50 PM tests d----- 11/4/2023 2:52 PM vendor -a---- 11/2/2023 12:25 PM 258 .editorconfig -a---- 11/4/2023 2:43 PM 1171 .env -a---- 11/2/2023 12:25 PM 1116 .env.example -a---- 11/2/2023 12:25 PM 186 .gitattributes -a---- 11/2/2023 12:25 PM 243 .gitignore -a---- 11/2/2023 12:25 PM 1686 artisan -a---- 11/2/2023 3:02 PM 1553 base.txt -a---- 11/4/2023 2:30 PM 58167 composer-setup.php -a---- 11/2/2023 12:25 PM 1882 composer.json -a---- 11/2/2023 12:25 PM 296306 composer.lock -a---- 11/2/2023 12:25 PM 113 db.sql -a---- 11/2/2023 12:25 PM 83555 package-lock.json -a---- 11/2/2023 12:25 PM 415 package.json -a---- 11/2/2023 12:25 PM 1084 phpunit.xml -a---- 11/2/2023 12:25 PM 80 postcss.config.js -a---- 11/2/2023 6:30 PM 4230 README.md -a---- 11/2/2023 12:25 PM 218 tailwind.config.js -a---- 11/2/2023 12:25 PM 263 vite.config.js
环境信息
- Laravel Installer: 5.1.3
- PHP Version: 8.2.12
- 操作系统:Windows
- 数据库:MySQL
已尝试操作
将php.ini中的memory_limit从256M调整为512M,问题未解决。
解决指导
确认修改的是正确的php.ini文件
运行php --ini命令,查看CLI模式下PHP加载的配置文件路径,确保你修改的是这个路径下的php.ini。Windows系统中,CLI和CGI模式的php.ini可能不是同一个文件。临时提升内存限制
启动服务器时直接指定内存限制:php -d memory_limit=1G artisan serve这会临时将内存限制设为1GB,快速验证是否是内存不足导致的问题。
排查视图文件的内存泄漏
错误提示指向编译后的视图文件storage/framework/views/3013c4ad2c85349d3078c69a5161cf9c.php,找到对应的原视图文件(通常在resources/views目录下),检查是否存在:- 无限循环逻辑
- 加载大量数据到视图(比如一次性查询上万条记录并遍历)
- 递归调用的Blade组件或函数
清理缓存文件
执行以下命令清理Laravel缓存:php artisan view:clear php artisan cache:clear php artisan config:clear编译后的视图文件可能存在异常,清理后会重新生成。
检查Ignition扩展的问题
第二个错误指向Spatie的Ignition包,尝试临时禁用Ignition:
在.env文件中设置:APP_DEBUG=false关闭调试模式后,Laravel会使用默认错误页面,避免Ignition处理错误时再次耗尽内存。如果问题消失,说明Ignition在处理错误时存在内存占用过高的情况,可以尝试更新Ignition包:
composer update spatie/ignition优化代码逻辑
如果提升内存后问题解决,说明代码存在内存占用过高的情况,需要优化:- 使用分页处理大量数据,避免一次性加载所有记录
- 关闭不必要的模型关联预加载,按需加载
- 检查循环逻辑,避免不必要的变量累积
内容的提问来源于stack exchange,提问作者Seth

