Partkeepr: 安装程序在预热缓存时失败(monolog 错误)

创建于 2017-09-23  ·  20评论  ·  资料来源: partkeepr/PartKeepr

系统信息

  • PartKeepr 版本:1.3.0
  • PHP 7.2 版

当我到达最后一步时,图像出现错误:

2017-09-22 15_28_28-partkeepr setup

move-to-wiki

最有用的评论

您可以快速解决这个问题:
转到文件 -> /vendor/symfony/monolog-bundle/DependencyInjection/Configuration.php

在第 594 行附近注释掉或删除下面的行:

// ->ifTrue(function ($v) { return ('fingers_crossed' === $v['type'] || 'buffer' === $v['type'] || 'filter' === $v['type']) && 1 !== count($v['handler']); })

添加以下行:
->ifTrue(function ($v) { return ('fingers_crossed' === $v['type'] || 'buffer' === $v['type'] || 'filter' === $v['type']) && (empty($v['handler']) || !is_string($v['handler'])); })

安装程序将完成安装,您可以访问该应用程序。

所有20条评论

错误:

Invalid configuration for path "monolog.handlers.main": Warning: count(): Parameter must be an array or an object that implements Countable

是由 PHP 7.2 引起的,临时解决方法是降级到 PHP 7.1。

该错误位于上游 symfony,请参阅: https :

有什么解决办法吗? 我正在使用 linux Mint,而且我不是安装 php7.1 的专业 linux 用户……Linux Mint 仅提供 7.2 标准……

您可以快速解决这个问题:
转到文件 -> /vendor/symfony/monolog-bundle/DependencyInjection/Configuration.php

在第 594 行附近注释掉或删除下面的行:

// ->ifTrue(function ($v) { return ('fingers_crossed' === $v['type'] || 'buffer' === $v['type'] || 'filter' === $v['type']) && 1 !== count($v['handler']); })

添加以下行:
->ifTrue(function ($v) { return ('fingers_crossed' === $v['type'] || 'buffer' === $v['type'] || 'filter' === $v['type']) && (empty($v['handler']) || !is_string($v['handler'])); })

安装程序将完成安装,您可以访问该应用程序。

这仍然是推荐的修复吗?

是的,好像是这样。
symphony/monolog-bundle 中的修复在 3.1.2 版中发布,而 PartKeepr 使用的是 2.4。
为了能够使用新版本的 monolog-bundle,symphony 必须更新,这并不容易(没有大量的时间投入)。
@erikvanberkum的解决方法仍然是最好的方法。

明白了。 也许有一个自动修复作为安装脚本的一部分?
也就是说,替换该行的自动修复。

尝试在 Raspberry Pi 3+ 上安装 Partkeepr 时遇到此问题

我放弃并进行了干净的重新刷新,然后从头开始重新安装了操作系统和 Partkeepr
此页面- https://wiki.partkeepr.org/wiki/PartKeepr_on_Debian_%22Stretch%22

我将超时设置为130而不是120,然后在数据库参数页面之后,我按照这个页面
https://wiki.partkeepr.org/wiki/APC_Metadata_Caching

编辑 yaml 并继续,它安装得很好。

所有这些分支中的哪一个是具有工作/最新代码的分支?
我现在已经尝试了其中的 13 个,但仍然无法安装它:(
使用 CentOS。

我的信息:

cat /etc/centos-release

CentOS Linux 版本 7.6.1810(核心)

uname -a

Linux xxx.org 3.10.0-957.12.2.el7.x86_64 #1 SMP Tue May 14 21:24:32 UTC 2019 x86_64 x86_64 x86_64 GNU/Linux

php -v

PHP 7.2.19 (cli)(构建时间:2019 年 5 月 29 日 11:04:13)(NTS)
版权所有 (c) 1997-2018 PHP Group
Zend Engine v3.2.0,版权所有 (c) 1998-2018 Zend Technologies

mysql --version

mysql Ver 15.1 Distrib 5.5.60-MariaDB,用于 Linux (x86_64) 使用 readline 5.1

httpd -v

服务器版本:Apache/2.4.6 (CentOS)
服务器建成时间:2019 年 4 月 24 日 13:45:48

我得到的错误:

[Sat Jun 01 00:22:58.384109 2019] [php7:warn] [pid 13807] [client 155.4.14.39:56332] PHP 警告:require_once(/webdata1/partkeepr/web/../app/cachebootstrap.php. ): 无法打开流:第 6 行的 /webdata1/partkeepr/web/app.php 中没有这样的文件或目录,参考: http ://partkeepr.ddns.net/setup/index.html
[Sat Jun 01 00:22:58.384190 2019] [php7:error] [pid 13807] [client 155.4.14.39:56332] PHP 致命错误:require_once():需要打开失败'/webdata1/partkeepr/web/.. app/bootstrap.php.cache' (include_path='.:/usr/share/pear:/usr/share/php') 在第 6 行的 /webdata1/partkeepr/web/app.php,引用: http:// partkeepr.ddns.net/setup/index.html
[Sat Jun 01 00:22:58.394956 2019] [php7:warn] [pid 13797] [client 155.4.14.39:56331] PHP 警告:require_once(/webdata1/partkeepr/web/../app/cachebootstrap.php. ): 无法打开流:第 6 行的 /webdata1/partkeepr/web/app.php 中没有这样的文件或目录,参考: http ://partkeepr.ddns.net/setup/index.html
[Sat Jun 01 00:22:58.395025 2019] [php7:error] [pid 13797] [client 155.4.14.39:56331] PHP 致命错误:require_once():需要打开失败'/webdata1/partkeepr/web/.. app/bootstrap.php.cache' (include_path='.:/usr/share/pear:/usr/share/php') 在第 6 行的 /webdata1/partkeepr/web/app.php,引用: http:// partkeepr.ddns.net/setup/index.html
[Sat Jun 01 00:22:58.565949 2019] [php7:warn] [pid 13799] [client 155.4.14.39:56334] PHP 警告:require_once(/webdata1/partkeepr/web/../app/cachebootstrap.php. ): 无法打开流:第 6 行的 /webdata1/partkeepr/web/app.php 中没有这样的文件或目录,参考: http ://partkeepr.ddns.net/setup/index.html
[Sat Jun 01 00:22:58.566015 2019] [php7:error] [pid 13799] [client 155.4.14.39:56334] PHP 致命错误:require_once():需要打开失败'/webdata1/partkeepr/web/.. app/bootstrap.php.cache' (include_path='.:/usr/share/pear:/usr/share/php') 在第 6 行的 /webdata1/partkeepr/web/app.php,引用: http:// partkeepr.ddns.net/setup/index.html4

我最近安装了 Partkeepr,但没有收到此消息。 因此,我正在关闭它。 如果有人遇到它,我们将重新开放。

@christianlupus我得到了错误,修复是#1065 ...

得到这个问题。 修复了对 monolog-bundle >3.1.0 的更新
作曲家需要 symfony/monolog- bundle:3.1。 * 修复

@christianlupus我认为这是一个很好的添加到文档中的内容:)

我可以把它放在文档中(至少是暂存的),但我怀疑这是一个很好的主意。 您正在将捆绑包的一部分从 2.7 更改为 3.1。 这是一个主要的版本更改,我不知道这可能有或没有任何副作用。
事实上,您让用户自己对 symphony 3 进行部分更新。 我对这种混合版本的僵尸程序的体验非常糟糕......它现在可能不会失败,但随时可能会失败。 我宁愿不给出官方建议,让我们对一个我们都不太了解的系统进行如此多的研究。 我的第一次检查没有产生任何损坏的依赖关系,但这只是以快速的手动方式完成的。

@baradhili您是否有更多信息或知识表明这是一个安全的建议?

@christianlupus啊不做模块升级..但是@erikvanberkum的评论

<<
您可以快速解决这个问题:
转到文件 -> /vendor/symfony/monolog-bundle/DependencyInjection/Configuration.php

在第 594 行附近注释掉或删除下面的行:

// ->ifTrue(function ($v) { return ('fingers_crossed' === $v['type'] || 'buffer' === $v['type'] || 'filter' === $v['type']) && 1 !== count($v['handler']); })

添加以下行:
->ifTrue(function ($v) { return ('fingers_crossed' === $v['type'] || 'buffer' === $v['type'] || 'filter' === $v['type']) && (empty($v['handler']) || !is_string($v['handler'])); })

安装程序将完成安装,您可以访问该应用程序。

>

啊,好的,我明白了。 我会一直打开它,直到我把它写到文档中。

我有同样的问题.. 无法找到安装旧版本 php 的方法...?? 我能得到一些帮助吗..
问题:

路径“monolog.handlers.main”的无效配置:警告:count():参数必须是一个数组或一个实现 Countable 的对象

我试图通过以下方式修复它:

转到文件 -> /vendor/symfony/monolog-bundle/DependencyInjection/Configuration.php

在第 594 行附近注释掉或删除下面的行:

// ->ifTrue(function ($v) { return ('finger_crossed' === $v['type'] || 'buffer' === $v['type'] || 'filter' === $v['type']) && 1 !== count($v['handler']); })

添加以下行:
->ifTrue(function ($v) { return ('finger_crossed' === $v['type'] || 'buffer' === $v['type'] || 'filter' === $v ['type']) && (empty($v['handler']) || !is_string($v['handler'])); })

但只是犯了这个错误:
err

@stegl请打开一个带有帮助请求的新问题,不要在这里解决这个问题。 不过你可以链接到这个。 非常感谢。

@christianlupus啊不做模块升级..但是@erikvanberkum的评论

<<
您可以快速解决这个问题:
转到文件 -> /vendor/symfony/monolog-bundle/DependencyInjection/Configuration.php

在第 594 行附近注释掉或删除下面的行:

// ->ifTrue(function ($v) { return ('fingers_crossed' === $v['type'] || 'buffer' === $v['type'] || 'filter' === $v['type']) && 1 !== count($v['handler']); })

添加以下行:
->ifTrue(function ($v) { return ('fingers_crossed' === $v['type'] || 'buffer' === $v['type'] || 'filter' === $v['type']) && (empty($v['handler']) || !is_string($v['handler'])); })

安装程序将完成安装,您可以访问该应用程序。

>

我尝试过此修复程序,但现在出现不同的错误。

“来自服务器的无效响应”

这个修复仍然有效吗?

@xadonxander命名的“修复”从来都不是修复。 这显然是在侵入依赖代码,这是一个明显的错误。

所以再次明确:不要更改/vendor文件夹下的任何内容。

在此期间最好的解决方法是使用 PHP 7.0 或 7.1。 那么错误根本不应该出现。 除此之外,我们绝对需要更新,请参阅#1083。

此页面是否有帮助?
0 / 5 - 0 等级

相关问题

WickedAx picture WickedAx  ·  11评论

kgabryszewska picture kgabryszewska  ·  8评论

christianlupus picture christianlupus  ·  55评论

dani2bunny picture dani2bunny  ·  24评论

michielbrink picture michielbrink  ·  7评论