【问题标题】:Where is the preload.php file, and how is it generated?preload.php 文件在哪里,它是如何生成的?
【发布时间】:2020-12-27 16:21:45
【问题描述】:

使用 Symfony 5.1 和 PHP 7.4,我想在 opcache 中添加 preload.php

Symfony documentation :

在容器编译期间(例如,运行 cache:clear 命令时),Symfony 在 config/ 目录中生成一个名为 preload.php 的文件,其中包含要预加载的类列表。

opcache.preload=/path/to/project/config/preload.php

但是当我执行cache:clear时,/config/目录中没有preload.php文件。

谷歌搜索后,this site indicates

现在,在 PhpStorm 中,检查 var/cache/prod/ 目录...这里是:App_KernelProdContainer.preload.php。

我有这个文件。是我做错了什么还是 symfony 的文档不是最新的?

【问题讨论】:

  • 我不确定第一次添加 config/preload.php 是什么时候。假设我可以检查 github。如果您创建一个新的当前 (5.2) 项目,那么您将获得一个 config/preload.php 文件。它只是一个加载 var 文件(如果存在)的两个衬垫。只需将 5.2 preload.php 复制到您的项目中,您应该更进一步。

标签: php symfony symfony5


【解决方案1】:

缓存生成过程中不会生成文件,所以你可以随意执行cache:clear,它不会为你生成。如果文档这么说,那就错了。

文件被复制到相应的弹性配方中。您可以查看文件here

您可以通过执行以下命令检查配方创建的文件:

composer symfony:recipes symfony/framework-bundle

要自动重新安装配方,只需执行:

composer sync-recipes symfony/framework-bundle --force

【讨论】:

  • 这对我在 symfony 5.1 上也没有任何作用
  • 我不知道您所说的“它什么都不做”是什么意思,但它确实适用于 Symfony 5.1。该配方专门指向该版本。从该评论开始,我无法真正帮助您,一定还有其他遗漏的内容,抱歉。
  • 我执行了sync-recipes --force 命令,甚至执行了git clean -df && rm -rf vendor && composer install 并且config/preload.php 文件不存在
  • 我不得不另外删除 symfony.lock 似乎单独的 --force 选项是不够的!
猜你喜欢
  • 1970-01-01
  • 2015-03-18
  • 1970-01-01
  • 2012-12-23
  • 2012-01-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多