有预加载文件时 Apache 不启动

Apache doesn't start when there's a preloaded file

我刚刚安装了 Opcache 并且一切正常,但是当我在 php.ini 中的 opcache.preload 中添加一个 PHP 文件并重新启动 Apache 服务器时没有开始吧。另一方面,在 CLI 中 SAPI 预加载工作正常!

当我注释掉 opcache.preload 并重新启动时,Apache 服务器工作

由于这个问题没有发出任何错误,我查找了 Apache error_log 文件,结果发现问题是我没有定义 opcahe 预加载用户

Fatal Error "opcache.preload_user" has not been defined

但是根据PHP documentation

Preloading code as root is not allowed for security reasons. This directive facilitates to let the preloading to be run as another user.

我正在 WSL

运行 Ubuntu 个人电脑上工作

所以请指导我该怎么做?我应该添加什么用户?

Ubuntu 上 Web 服务器的默认用户是 www-data

您只需

opcache.preload_user=www-data

如果您想检查预加载

var_dump(opcache_get_status()['preload_statistics']); 

它将列出所有预加载的文件以及它们占用的内存

至于为什么我没有定义preload用户,Apache拒绝启动?

其实我也不知道为什么。这可能是一个错误,但不确定。


虽然 PHP 文档中的声明不完整,但请注意:

Preloading under root is not allowed by default, but explicit use of opcache.preload_user=root is allowed