Laravel 5.4 运行 `PHP artisan optimize` 不再生成编译文件

公司项目升级到 5.4 后 运行 optimize 命令得到如下输出

Generating optimized class loader
The compiled services file has been removed.

检查 bootstrap 目录下确实没有生成编译文件。以为是 APP_ENV 环境变量设置有误,检查无误。猜测是 5.4 移除了该功能,果然在 github 的 laravel/framework PR 上找到了答案。

Since Laravel 5.5 will be PHP 7.0+ it makes sense to remove this feature, since the best way to optimize performance in PHP 7 is just to correctly configure opcache to what's best for your server and websites.

这条建议被 Taylor 采纳并最终合并到了 5.4 ,坑爹的是 5.4 升级指南中并没有说明这一点。

所以现在开始忘记 optimize 命令吧,请使用字节码缓存 OPcache 替代。

《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
讨论数量: 8

这个4天前的 PR 在文档中增加了升级说明

8年前 评论

@milkmeowo ?看到了,只是官网文档还没更新

8年前 评论

@uicosp PR了就会同步更新到官网文档的,可能不小心看漏了吧,或者你遇到这问题的时候,还没有这个pr

8年前 评论

我记得5.1的代码中php artisan optimize只是对composer dump-autoload --optimize的一个封装

主要目的是为了生成vendor/composer下的一系列文件,

所以我一直执行的composer dump-autoload --optimize,bootstrap 的cache文件也从未生成,也没看出什么问题:smile: 。

请使用字节码缓存 OPcache 替代,这句话怎么理解? 只要使用opcache即可的意思?

8年前 评论

@member 对的,现在开始使用 opcache 就行了。实测当初次请求200ms左右时,后续请求耗时缩减到30ms。

8年前 评论

@member 5.1 是生成在storage/frameworks/ 下的

8年前 评论

php artisan opcache:optimize

Optimize started, this can take a while... The requested URL returned error: 500 Internal Server Error Url: 127.0.0.1/opcache-api/optimize?key=...

我的opcach出现这个问题

1年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!