【问题标题】:Why is this use of count() not valid in php?为什么在 php 中使用 count() 无效?
【发布时间】:2020-08-01 07:43:42
【问题描述】:

在一些 phpmyadmin 库中有很多与 count() 逻辑错误相关的问题,但它们似乎都与这个略有不同。

我对“设计器”选项卡中的这种奇怪行为感到有些不知所措。我被告知'在服务器上检测到错误!'并且我应该'查看此窗口的底部',但正如您从image 控制台中没有任何内容,并且错误消息被隐藏:

每次打开“设计器”选项卡都会弹出这个窗口后,我决定追踪它:

...查看 /usr/share/phpmyadmin/libraries/pmd_common.php 中的问题行 #405,我发现:

if (count($min_page_no[0])) {

...但这不是对count() 函数的完全合法使用吗? 这是在一个库文件中,所以我该如何调试呢? - 我尝试var_dump($min_page_no[0]); 并重新加载页面以查看我正在处理的内容,但没有显示任何内容。

【问题讨论】:

    标签: php phpmyadmin


    【解决方案1】:

    更新您的 phpMyAdmin 安装。

    我相信 4.7.8 解决了这个问题,此提交上的发布标签证明了这一点:

    https://github.com/phpmyadmin/phpmyadmin/commit/c77cfa7d13370a7f1e3236c5896f89981e61406f

    [编辑:并解释为什么在这种情况下 count 无效:该特定索引并不总是设置。如果他们尝试在未设置的数组索引上使用count(),则会引发该警告。]

    【讨论】:

    • 感谢您的回答。有趣的是,当我按照您提供的链接中的建议将行更改为 if (isset($min_page_no[0]) && count($min_page_no[0])) { 时,我仍然收到弹出错误消息,但没有收到隐藏消息框。但是,将其更改为 if (count((array)$min_page_no[0])) { 似乎可以摆脱两者。
    • 老实说,你真的应该更新整个库。自您当前使用的版本发布以来,实际上已经有数千次更新。
    • 更新的问题是,当我运行apt-cache policy phpmyadmin 时,我得到:phpmyadmin: Installed: 4:4.6.6-5 Candidate: 4:4.6.6-5 Version table: *** 4:4.6.6-5 500 500 http://gb.archive.ubuntu.com/ubuntu bionic/universe amd64 Packages 500 http://gb.archive.ubuntu.com/ubuntu bionic/universe i386 Packages 100 /var/lib/dpkg/status,这意味着最新版本在 ppa 中还没有。
    • 哦,我明白了。你有我的同情。那个版本惊人地老了。好吧,如果您对手动修补没问题,可以在提交中找到针对此类 PHP 警告的许多修复(或推动修复)。 [如果您发现遇到很多问题,也可以选择手动安装。]
    • 您可以删除打包版本并安装自己的版本 (docs.phpmyadmin.net/en/latest/setup.html#quick-install),使用 phpMyAdmin PPA 包 (launchpad.net/~phpmyadmin/+archive/ubuntu/ppa) 或其他几种方法(例如 Docker),以便运行更多最新版本的 phpMyAdmin。您可能很幸运可以直接向 Ubuntu 提交错误报告(因为它是未修复的打包版本),但他们不太可能修补此问题。另外,4.6.6到现在已经三年多了,我同意你应该更新。
    猜你喜欢
    • 2016-01-27
    • 1970-01-01
    • 2013-01-01
    • 2014-12-29
    • 1970-01-01
    • 1970-01-01
    • 2011-08-06
    • 1970-01-01
    • 2012-04-19
    相关资源
    最近更新 更多