Ubuntu下phpMyAdmin反复警告Warning in ./libraries/sql.lib.php#613 count()解决

本文提供了解决在PHP7.2环境下使用phpMyAdmin时遇到的警告问题的方法,通过修改sql.lib.php文件中特定代码,可以消除因参数类型不匹配导致的警告。

打开phpMyAdmin每次都会提示

roblem with phpMyAdmin and PHP 7.2: “Warning in ./libraries/sql.lib.php#613 count(): Parameter must
查阅了资料,是因为安装phpMyAdmin时,存储库中的版本(phpMyAdmin v4.6.6)与PHP 7.2不完全兼容

此错误是因为/usr/share/phpmyadmin/libraries/sql.lib.php引起的,解决办法如下

首先,在编辑sql.lib.php之前备份文件  

sudo cp /usr/share/phpmyadmin/libraries/sql.lib.php /usr/share/phpmyadmin/libraries/sql.lib.php.bak
用nano编辑  sql.lib.php

sudo nano /usr/share/phpmyadmin/libraries/sql.lib.php
按CTRL+ W 搜索 (count($analyzed_sql_results['select_expr'] == 1)

替换为 ((count($analyzed_sql_results['select_expr']) == 1)

保存文件并退出。(按  CTRL +  X,按  Y ,然后按  ENTER)

请注意,这只是一个临时修复,并且在phpMyAdmin更新到最新版本之前可能会出现其他兼容性问题。

 

参照 https://devanswers.co/problem-php-7-2-phpmyadmin-warning-in-librariessql-count/
————————————————
版权声明:本文为优快云博主「wangshuccc」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.youkuaiyun.com/Kinweini/java/article/details/83043163

<think>好的,我现在需要解决用户提到的两个问题:phpMyAdmin无法设置session cookie的警告,以及Twig加载器中realpath函数传递null导致的弃用通知。首先,我需要分别分析这两个问题的原因,并找到相应的解决方法。 首先,关于“Failed to set session cookie. Maybe you are using HTTP instead of HTTPS to access phpMyAdmin.”这个错误。通常,当phpMyAdmin尝试在非HTTPS连接下设置cookie时,如果服务器配置要求使用安全cookie,就会触发这个警告。这可能是因为用户当前通过HTTP访问phpMyAdmin,而phpMyAdmin的配置中设置了session.cookie_secure为True,这会导致在HTTP下无法正确设置cookie。解决方法可能包括强制使用HTTPS访问,或者调整PHP的会话配置,比如在php.ini中修改session.cookie_secure的设置,或者通过phpMyAdmin的配置文件覆盖这个设置。 接下来是Twig的FilesystemLoader中realpath(null)的弃用警告。根据用户提供的引用[2],问题出现在FilesystemLoader.php文件的第40行,传递null给realpath函数导致PHP 8.1的弃用通知。用户之前已经通过注释掉抛出异常的代码来解决类似问题,但这次可能需要检查代码中是否有路径未被正确设置的情况。可能的解决方案包括更新Twig到兼容的版本,或者修改相关代码,确保传递给realpath的参数不为null。例如,检查路径变量是否被正确初始化,或者在调用realpath之前添加条件判断,确保路径有效。 现在需要验证这些思路是否正确。对于session cookie的问题,查阅phpMyAdmin的官方文档,发现确实可以通过修改config.inc.php中的$cfg['ForceSSL']来强制使用HTTPS。同时,检查PHP的session配置,session.cookie_secure设置为1时会强制cookie仅通过HTTPS传输,如果无法使用HTTPS,可能需要将其设为0,但这样会降低安全性,所以最佳实践还是启用HTTPS。 对于Twig的问题,查看Twig的GitHub仓库或问题跟踪系统,是否有类似的问题和修复。发现最新版本的Twig可能已经处理了这个问题,或者社区中有推荐的补丁方法。如果无法升级,可能需要按照引用[2]的方法注释掉抛出异常的代码,或者确保所有路径参数都被正确传递,避免null值。 综合以上分析,解决方法应该是分步骤处理每个问题,并确保修改后的配置或代码不会引入其他问题。同时,提醒用户优先考虑使用HTTPS来增强安全性,而不仅仅是禁用安全设置。</think>### 解决方案 #### 问题1:`Failed to set session cookie` 警告(HTTP/HTTPS问题) **原因** 此警告通常由于phpMyAdmin配置要求使用HTTPS时,用户却通过HTTP访问。PHP会话设置中的`session.cookie_secure`参数被启用(值为`1`),强制Cookie仅通过HTTPS传输[^1]。 **解决步骤** 1. **强制使用HTTPS访问** 在phpMyAdmin配置文件`config.inc.php`中添加以下代码: ```php $cfg['ForceSSL'] = true; ``` 2. **调整会话Cookie设置(临时方案)** 若无法启用HTTPS,可修改PHP配置文件`php.ini`(或通过`.htaccess`): ```ini session.cookie_secure = 0 ``` 或在`config.inc.php`中覆盖设置: ```php ini_set('session.cookie_secure', '0'); ``` --- #### 问题2:Twig加载器中`realpath()`弃用警告 **原因** PHP 8.1+禁止向`realpath()`传递`null`参数,而旧版Twig在路径未正确初始化时会触发此错误[^2]。 **解决步骤** 1. **直接修复代码(推荐)** 打开文件`vendor/twig/twig/src/Loader/FilesystemLoader.php`,找到以下代码段: ```php if (null === $this->paths) { throw new LoaderError(sprintf('The "%s" directory does not exist.', $path)); } ``` 将其注释或替换为: ```php if (null === $this->paths || '' === $this->paths) { $this->paths = []; // 初始化空路径避免null传递 } ``` 2. **升级Twig依赖** 若phpMyAdmin允许,升级Twig到兼容PHP 8.1+的版本(如Twig 3.x): ```bash composer update twig/twig ``` --- ### 总结 1. 优先通过HTTPS访问phpMyAdmin并配置`$cfg['ForceSSL']`[^1]。 2. 修改Twig加载器代码或升级依赖以兼容PHP 8.1+[^2]。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值