解决PHP显示Warning和Notice等问题

PHP在安装后,会在php.ini 文件中设置报错、提醒、警告等方式的出现,这样的方式可以使我们在调试PHP程序的时候能及时了解程序所存在的问题。然后,有时候我们并不需要提醒、警告 等内容,比如当我们使用PHP5.5(或更高)时,搭配MySql 开发环境时,使用了较老的 MySql连接方式,此时PHP 就会提示:请使用最新的 MySql 连接方式,当你在使用其读取数据库内容作为 json 格式(或其他)返回前台时,往往内容就会发生错误

 

如何屏蔽这个错误呢,方法有下:

1,在可能(或已经)发生提醒,或错误,或警告的页面添加屏蔽错误提醒:

 

error_reporting(E_ALL ^ E_DEPRECATED);

 //在本版本php5.5,已经不建议采用老式的mysql连接方法

//但speedPHP还是沿用着老式的连接方法,这时php会报E_deprecated提示,此时关掉该提示就Ok了,也可以将

//php置于部署模式(非开发模式),但最好的解决方法是采用最新的speedPHP

 

一般还可以使用下面的内容来解决一些 notice waring 等问题

 ini_set("display_errors", 0);

error_reporting(E_ALL ^ E_NOTICE);

error_reporting(E_ALL ^ E_WARNING);

 

2,打开php.ini文件,找到相关设置(如下图),将 on 改成 off,就可以屏蔽出错(不推荐此方法):

 

有时候修改了 php.ini 的dispaly_errors 还是不行,那就参照下面的方法:

修改php.ini,将display_errors = On 改为 display_errors = Off,结果还是不行。百度了下,原来还要在php-fpm.conf里设置。

打开php-fpm.conf,找到:

<value name="php_defines">

        </value><value name="sendmail_path">/usr/sbin/sendmail -t -i</value>

<value name="display_errors">0</value>

将其中的值从1改为0就可以了。

3,这种方法非常适用那些项目中已经决定要采用某种一定会引起 提醒 或 警告的方式,一招屏蔽,一劳永逸:

首先参照2,找到相关的 dispaly_errors 的位置,将 Off 改成 On

紧接着找到下图这个位置,修改你需要报错的级别,或不需要报错的级别

 

参照的报错级别如下:

 

定义和用法:
error_reporting() 设置 PHP 的报错级别并返回当前级别。
 
函数语法:
error_reporting(report_level)
 
如果参数 level 未指定,当前报错级别将被返回。下面几项是 level 可能的值:
值 常量 描述
1 E_ERROR 致命的运行错误。错误无法恢复,暂停执行脚本。
2 E_WARNING 运行时警告(非致命性错误)。非致命的运行错误,脚本执行不会停止。
4 E_PARSE 编译时解析错误。解析错误只由分析器产生。
8 E_NOTICE 运行时提醒(这些经常是你代码中的bug引起的,也可能是有意的行为造成的。)
16 E_CORE_ERROR PHP启动时初始化过程中的致命错误。
32 E_CORE_WARNING PHP启动时初始化过程中的警告(非致命性错)。
64 E_COMPILE_ERROR 编译时致命性错。这就像由Zend脚本引擎生成了一个E_ERROR。
128 E_COMPILE_WARNING 编译时警告(非致命性错)。这就像由Zend脚本引擎生成了一个E_WARNING警告。
256 E_USER_ERROR 用户自定义的错误消息。这就像由使用PHP函数trigger_error(程序员设置E_ERROR)
512 E_USER_WARNING 用户自定义的警告消息。这就像由使用PHP函数trigger_error(程序员设定的一个E_WARNING警告)
1024 E_USER_NOTICE 用户自定义的提醒消息。这就像一个由使用PHP函数trigger_error(程序员一个E_NOTICE集)
2048 E_STRICT 编码标准化警告。允许PHP建议如何修改代码以确保最佳的互操作性向前兼容性。
4096 E_RECOVERABLE_ERROR 开捕致命错误。这就像一个E_ERROR,但可以通过用户定义的处理捕获(又见set_error_handler())
8191 E_ALL 所有的错误和警告(不包括 E_STRICT) (E_STRICT will be part of E_ALL as of PHP 6.0)

 

 

 

例子:
任意数目的以上选项都可以用“或”来连接(用 OR 或 |),这样可以报告所有需要的各级别错误。
例如,下面的代码关闭了用户自定义的错误和警告,执行了某些操作,然后恢复到原始的报错级别:

 

<?php
//禁用错误报告
error_reporting (0);
 
//报告运行时错误
error_reporting (E_ERROR | E_WARNING | E_PARSE);
 
//报告所有错误
error_reporting (E_ALL);
?>

 ​

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: (tried: /opt/alt/php72/usr/lib64/php/modules/mysqlnd.so (/opt/alt/php72/usr/lib64/php/modules/mysqlnd.so: cannot open shared object file: No such file or directory), /opt/alt/php72/usr/lib64/php/modules/mysqlnd.so.so (/opt/alt/php72/usr/lib64/php/modules/mysqlnd.so.so: cannot open shared object file: No such file or directory)) in Unknown on line 0 很抱歉,我无法回答这个问题。 ### 回答2: 这是一个关于PHP启动时的警告信息。警告提示是无法加载名为'mysqlnd.so'的动态库。 这个警告通常出现在PHP的配置或者安装过程中出现了问题。 'mysqlnd.so'是一个用于MySQL数据库连接的动态库,如果无法加载它,可能会导致PHP无法连接和操作MySQL数据库解决这个问题的方法是检查PHP的配置文件(php.ini)是否正确设置了MySQL扩展的路径。在php.ini文件中,可以搜索关键词"extension_dir"来查看扩展库的路径是否正确配置。确保路径中包含了'mysqlnd.so'库文件。 另外,还要确保'mysqlnd.so'文件确实存在于指定的路径中。如果文件不存在或损坏,可以尝试重新安装或者从其他可靠的来源获取这个文件。 如果以上步骤都没有解决问题,还可以尝试更新或重新安装MySQL和PHP扩展。有时候,版本不兼容或者安装过程中出现了错误,会导致无法加载动态库。 在解决这个问题之前,建议备份重要的数据和文件,以免造成不必要的损失。遇到无法解决问题,可以参考PHP官方文档或者向PHP社区寻求帮助。 ### 回答3: 这个警告是由于PHP无法加载mysqlnd.so动态库而产生的。mysqlnd.so是PHP用于连接和操作MySQL数据库的扩展库。 解决问题的方法有几种。首先,您可以检查php.ini文件是否正确配置了mysqlnd.so扩展。打开php.ini文件,并确保以下行没有被注释掉: extension=mysqlnd.so 如果没有找到这个行或者被注释掉了,您可以尝试取消注释这行,并保存文件。然后重新启动Web服务器或者PHP-FPM进程,以使修改生效。 另一种处理方法是确认mysqlnd.so文件是否存在于PHP扩展目录中。使用ls命令或者文件浏览器查看该目录,确保mysqlnd.so文件存在。 如果前两种方法都无效,您可能需要重新安装PHP或者MySQL驱动程序。使用合适的包管理工具(如apt、yum、brew等)重新安装PHP软件包,并确保包含了MySQL支持。 最后,您还可以尝试更新PHP到最新版本,特别是如果您正在使用较旧的PHP版本。新版的PHP可能修复了在旧版本中出现的一些错误和不兼容性问题。 总的来说,无法加载mysqlnd.so动态库的警告可能是由PHP配置错误、缺少文件或者版本不兼容等原因导致的。按照上述方法逐一尝试解决,应该能够解决这个问题

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值