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

《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
讨论数量: 8

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

7年前 评论

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

7年前 评论

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

7年前 评论

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

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

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

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

7年前 评论

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

7年前 评论

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

7年前 评论

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个月前 评论

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