Windows、XAMPP、PHP 7 和 opcache

Posted

技术标签:

【中文标题】Windows、XAMPP、PHP 7 和 opcache【英文标题】:Windows, XAMPP, PHP 7 and opcache 【发布时间】:2017-04-23 01:17:43 【问题描述】:

我已经安装了最新的带有 php 7 的 XAMPP 服务器 (更新:还检查了 PHP 7.1)(在我的 Windows 10 系统上)。想使用 opcache,所以我在php.ini 中启用了它。

[opcache]
zend_extension=php_opcache.dll
opcache.enable=1
opcache.enable_cli=0
opcache.memory_consumption=128
opcache.interned_strings_buffer=8
opcache.max_accelerated_files=4000

现在有了这个变化,几乎每次页面刷新,我都会从 Apache 收到这个错误:

AH00428: Parent: child process 3748 exited with status 3221226356 -- Restarting.

所以,页面正在加载,并且正在加载……等待 Apache 重新启动。当我关闭 opcache 时(通过设置 opcache.enable=0),Apache 没有重新启动并且一切正常(当然忽略了较慢的 Web 应用程序主题)。

在 XAMPP 上加载具有 PHP 5.6 并启用 opcache 的应用程序时一切正常。

编辑(添加 GIF 图片): 如您所见,有时页面会刷新。但有时它刷新的时间要长得多,而 Apache 会在那一刻重新启动。

编辑: 老实说,我放弃了这个应用程序并在 Windows 上使用 PHP(在 PHP Ubuntu 和使用 Docker 创建的服务器。一切都更容易配置(尤其是使用 Docker)并且运行速度更快。我建议每个人都这样做;)。

【问题讨论】:

听起来像是该模块中的错误。我建议您解决xampp 项目并创建一个错误报告。 你重启了apache吗? @JOUM 多次:D 你试过完整路径吗,比如zend_extension="G:\xampp\php\ext\php_opcache.dll" @pinkalvansia 在第一名:)。 【参考方案1】:

你的php_opcache.dll 路径似乎错误,你需要像下面这样写,它对我有用。

[opcache]
zend_extension=C:\xampp\php\ext\php_opcache.dll
opcache.enable=1
opcache.enable_cli=1
opcache.memory_consumption=256
opcache.max_accelerated_files=2000

更多详情

如果你的 XAMPP 默认带有 PHP 5.5+,opcache 已经包含在包中,你只需要启用它。启用扩展:

    打开 php.ini(默认应该位于此处:C:\xampp\php\php.ini)。

    在文件末尾添加这一行: zend_extension=C:\xampp\php\ext\php_opcache.dll

    重新启动 Apache 服务器。

【讨论】:

在此位置检查 dll 文件 php_opcache.dll:C:\xampp\php\ext\ 并使用最佳配置和 opcache dll 文件的位置更新您的 php.ini 文件【参考方案2】:

打开一个php.ini文件

    ;opcache.enable=1 更改为 opcache.enable=1 在文件末尾添加opcache dll路径zend_extension = "C:\xampp\php\ext\php_opcache.dll" 重启apache

更多参考请查看此视频https://www.youtube.com/watch?v=GvWrNoRDjUY

【讨论】:

【参考方案3】:

说实话 - 不要使用 xammp。现在我们有更好的技术栈,可以在 Linux 服务器上运行 PHP。 码头工人 https://docs.docker.com/docker-for-windows/

流浪者: https://www.vagrantup.com/

它们都是基于linux系统的,xammp的大部分问题都不会出现。

【讨论】:

【参考方案4】:

如果是 Xampp,只需将以下几行放在 [opcache] 旁边

zend_extension="C:\xampp\php\ext\php_opcache.dll"
opcache.enable=1
opcache.enable_cli=1
opcache.memory_consumption=256
opcache.interned_strings_buffer=8
opcache.max_accelerated_files=4000
opcache.revalidate_freq=60
opcache.fast_shutdown=1

【讨论】:

【参考方案5】:

创建具有适当权限的目录并将其设置为 php.ini 有效!

opcache.file_cache=d:\xampp\htdocs\opcache

【讨论】:

您能否详细说明您是如何帮助解决这个问题的? 它没有帮助我。【参考方案6】:
ThreadStackSize 8388608 

在类似的情况下帮助了我。这是一个 httpd 选项。

【讨论】:

您能否更准确地说明您认为这可以解决问题的原因?随机更改的配置对我来说就像是骗局 httpd.apache.org/docs/2.4/mod/mpm_common.html >>> Apache httpd 在使用一些第三方模块时可能会崩溃,这些模块使用的自动数据存储量比较大。【参考方案7】:

在 php.ini 上添加更多

zend_extension=opcache

删除评论

opcache.enable=1
opcache.enable_cli=0
opcache.memory_consumption=256
opcache.max_accelerated_files=10000

重启apache

【讨论】:

以上是关于Windows、XAMPP、PHP 7 和 opcache的主要内容,如果未能解决你的问题,请参考以下文章

如何在 xampp for windows 中安装 mcrypt php 7.2.3 扩展?

在 XAMPP 1.8.3 windows 7 安装上升级 PHP

在 XAMPP 1.8.3 windows 7 安装上升级 PHP

在 XAMPP 1.8.3 windows 7 安装上升级 PHP

在 xampp 中从 5.6 迁移 PHP 7 时,PDO 驱动程序在 Windows 中没有价值

在 Windows 10 和 PHP7 上将 ZeroMQ PHP 扩展添加到 XAMPP