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 替代。

《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 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年前 评论