PHP 解决Invalid argument supplied for foreach()报错
零点起飞学PHP之错误处理
7.1.2 环境错误
环境错误通常是指PHP运行的环境和相关服务关联的 问题,例如PHP程序需要使用的相关模块没有被正确 加载、服务器没有启动、数据库配置错误等等。由于 我们使用的是集成开发环境,因此这些问题出现的概 率是比较小的,集成环境的制作者已经替我们做了大 量的工作。但是如果是初次自己搭建一个环境来运行, 通常情况下会非常的吃力。环境错误所涉及的编程语 言之外的知识比较多,因此本书我们不做详细讲解。
2.使用error_reporting() 函数
【示例7-8】演示不使用error_reporting函数设置时候将0作 为除数,未定义的变量作为被除数后的运行结果。 从运行结果我可以看出有一条变量为定义的提示和一条0作 为除数的警告。下面我就通过设置错误报告来使警告不再 提示,代码如下: 01 <?php 02 error_reporting(E_ALL&~E_WARNING); 03 echo '$a/0='.$a/0; 04 ?> 从运行结果可以看到,警告信息已经不再显示,而提示信 息还在显示,这就演示了使用error_reporting函数可以使得 PHP的错误报告非常灵活。
第7章 错误处理
错误在编程的过程中通常是无法避免的。我们在前面 的学习过程中也碰到了多处错误。PHP系统可以帮助 我们就提示以及修正一些错误。我们也可以自己定义 一些抛出和处理错误方法。本章将详细讲解错误发送 的原因和种类以及处理这些错误的方法。
7.1 错误发生的原因
错误发生的原因有多种,他们按照特点可以分为大的 四类,分别是语法错误、环境错误、逻辑错误和运行 时错误。本节就来介绍这些错误。
256
512 1024 2048 4096
PHP如何抛出异常处理错误
PHP如何抛出异常处理错误⾸先要知道什么是PHP异常?异常(Exception)⽤于在指定的错误发⽣时改变脚本的正常流程。
PHP 5 提供了⼀种新的⾯向对象的错误处理⽅法。
异常处理⽤于在指定的错误(异常)情况发⽣时改变脚本的正常流程。
这种情况称为异常。
当异常被触发时,通常会发⽣:当前代码状态被保存代码执⾏被切换到预定义的异常处理器函数根据情况,处理器也许会从保存的代码状态重新开始执⾏代码,终⽌脚本执⾏,或从代码中另外的位置继续执⾏脚本我们将展⽰不同的错误处理⽅法:异常的基本使⽤创建⾃定义的异常处理器多个异常重新抛出异常设置顶层异常处理器异常的基本使⽤当异常被抛出时,其后的代码不会继续执⾏,PHP 会尝试查找匹配的 “catch” 代码块。
如果异常没有被捕获,⽽且⼜没⽤使⽤ set_exception_handler() 作相应的处理的话,那么将发⽣⼀个严重的错误(致命错误),并且输出 “Uncaught Exception” (未捕获异常)的错误消息。
让我们尝试抛出⼀个异常,同时不去捕获它:复制代码代码如下:<?php//create function with an exceptionfunctioncheckNum($number) {if($number>1) {throw new Exception(”Value must be 1 or below”);} return true;}//triggerexceptioncheckNum(2);>上⾯的代码会获得类似这样的⼀个错误:Fatal error: Uncaught exception ‘Exception' with message ‘Value must be 1 or below' in C:\webfolder\test.php:6 Stack trace: #0 C:\webfolder\test.php(12): checkNum(28) #1 {main} thrown in C:\webfolder\test.php on line 6Try, throw 和 catch要避免上⾯例⼦出现的错误,我们需要创建适当的代码来处理异常。
invalid number of argument concat函数
invalid number of argument concat函数摘要:1.概述2.函数定义与用途3.参数个数错误4.错误原因与解决方法5.总结正文:一、概述在编程中,我们常常需要将不同的数据类型进行拼接,如将字符串与数字相加,或者将多个字符串拼接在一起。
在Python中,`concat()`函数就是用来实现这个功能的。
但是,如果在使用`concat()`函数时,传入的参数个数不正确,就会出现“invalid number of argument”的错误提示。
本文将详细解释这个错误的原因,并提供解决方法。
二、函数定义与用途首先,我们需要了解`concat()`函数的定义和用途。
在Python中,`concat()`函数主要用于连接两个或多个字符串。
例如:```pythonstr1 = "Hello"str2 = "World"result = str1.concat(str2)print(result) # 输出"HelloWorld"```需要注意的是,`concat()`函数只能用于字符串类型的数据,如果传入的参数不是字符串类型,将会引发错误。
三、参数个数错误当我们使用`concat()`函数时,需要确保传入的参数个数正确。
`concat()`函数接受1个或2个参数,分别是需要连接的字符串。
例如:```pythonstr1 = "Hello"str2 = "World"result = str1.concat(str2) # 正确str1 = "Hello"str2 = "World"result = str1.concat() # 错误,缺少参数```如果传入的参数个数不正确,就会出现“invalid number of argument”的错误提示。
php_错误处理机制
exit(); } ?>
可以看到,通过结合使用 throw 关键字和 try-catch 语句,我们可以避免错误标记“污染”类方法返 回的值。因为“异常”本身就是一种与其它任何对象不同的 PHP 内建的类型,不会产生混淆。 如果抛出了一个异常,try 语句中的脚本将会停止执行,然后马上转向执行 catch 语句中的脚本。 如果异常抛出了却没有被捕捉到,就会产生一个 fatal error。
这里有两个地方的调用可能导致程序出错(__construct()和
getCommandObject())。尽管如此,我们不需要调整我们的客户代码。你可以在 try 语句中增
getErrorStr()、 getError()和 error()等功能相同的函数。
然而,实际开发中要让程序中的所有类都从同一个类中继承而来是很困难的,除非同时使用接口 (interface)否则无法实现一些子类自身特有的功能, 但那已经是 PHP5 的内容。 就像我们将提到的, PHP5 中提供了更好的解决方案。
同时处理多个错误
在目前为止异常处理看起来和我们传统的作法—检验返回的错误标识或对象的值没有什么太大区别。让我 们将 CommandManager 处理地更谨慎, 并在构造函数中检查 command 目录是否存在。 index_php5_2.php
<?php // PHP 5 require_once('cmd_php5/Command.php'); class CommandManager { private $cmdDir = "cmd_php5";
返回 Error flag(错误标记)
脚本层次的错误处理比较粗糙但很有用。尽管如此,我们有时需要更大的灵活性。我们可以使用返回 错误标识的办法来告诉客户代码“错误发生了!”。这将程序是否继续,如何继续的责任交给客户代码来决 定。 这里我们改进了前面的例子来返回一个脚本执行出错的标志(false 是一个常用的不错的选择)。
PHPFATALERROR:CALLTOUNDEFINEDFUNCTIONBCMUL()解决办法
PHPFATALERROR:CALLTOUNDEFINEDFUNCTIONBCMUL()解决办法在⼀台处理⽹络⽀付的服务器迁移的时候,发现不能⽀付。
PHP版本为5.3.3系统为Red Hat 4.1.2-54查看apache的错误⽇志,发现是加密⽂件中⼀个函数bcmul()报错:复制代码代码如下:PHP Fatal error: Call to undefined function bcmul() in /php_rsa.php on line xxx使⽤如下命令:复制代码代码如下:yum install php-bcmath就安装好了。
复制代码代码如下:Loaded plugins: fastestmirrorLoading mirror speeds from cached hostfile* base: * extras: * rpmforge: ftp.riken.jp* updates: Setting up Install ProcessResolving Dependencies--> Running transaction check---> Package php-bcmath.x86_64 0:5.1.6-40.el5_9 set to be updated--> Processing Dependency: php-common = 5.1.6-40.el5_9 for package: php-bcmath--> Running transaction check---> Package php-common.x86_64 0:5.1.6-40.el5_9 set to be updated--> Processing Conflict: php53-common conflicts php-common--> Finished Dependency Resolutionphp53-common-5.3.3-13.el5_9.1.x86_64 from installed has depsolving problems--> php53-common conflicts with php-commonError: php53-common conflicts with php-commonYou could try using --skip-broken to work around the problemYou could try running: package-cleanup --problemspackage-cleanup --dupesrpm -Va --nofiles --nodigest就需要使⽤yum update 之后再yum install php53-bcmath就好了顺便了解了⼀下,bcmath这个函数是PHP数学扩展中的⼀个。
PHP编译configure时常见错误的总结
PHP编译configure时常见错误的总结PHP编译configure时常见错误的总结PHP的安装虽然有时候很简单,可是如果应⽤⼀多,我们安装起来就很头痛了!出错最多的就是安装PHP扩展的时候了。
其实不管是你是Apache类的应⽤还是Nginx类的,PHP的安装都不是很简单,虽然⽹上有很多configure参数,但是那不⼀定是适合你的,因为很多都直接关系着你的系统版本和内核。
因此要⾃⼰亲⾃不断的调试,才能完全安装成功。
本⽂总结了⼀些常见的configure错误信息和解决这些错误的经验。
1、configure: error: No curses/termcap library found⽹上有的说法是:–with-named-curses-libs=/usr/lib/libncursesw.so.5 其实是不对的,虽然能解决configure的错误,但是make 的时候会提⽰错误,正确的做法应该是centos: yum -y install ncurses-develdebian: apt-get install libncurses5-dev2、configure: error: xml2-config not found. Please check your libxml2 installation.centos: yum -y install libxml2 libxml2-develdebian : apt-get install libxml2-dev3、configure: error: Cannot find OpenSSL'scentos: yum -y install openssl-devel4、configure: error: libjpeg.(a|so) not foundcentos: yum -y install gdcentos: yum -y install gd-develdebian: apt-get install libjpeg-dev5、configure: error: libpng.(a|so) not found.apt-get install libpng12-dev6、configure: error: cannot find output from lex; giving upyum -y install flex7、configure: error: mod_deflate has been requested but can not be built due to prerequisite failurescentos: yum -y install zlib-devel openssl-develdebian: apt-get install zlib1g-dev8、configure: error: libxpm.(a|so) not found.centos: yum -y install libxpm-devdebian: apt-get install libxpm-dev9、configure: error: freetype.h not found.centos: yum install freetype-develdebian: apt-get install libfreetype6-dev10、configure: error: …No recognized SSL/TLS toolkit detectedcentos: yum -y install libssl-devdebian: apt-get install libssl-dev11、Configure: error: Please reinstall the BZip2 distributioncentos: yum install bzip2 bzip2-develdebian: apt-get install bzip2-devel12、Configure: error: Please reinstall the libcurl distribution – easy.h should be in /include/curl/centos: yum install curl curl-devel (For Redhat & Fedora)# install libcurl4-gnutls-dev (For Ubuntu)13、Configure: error: Unable to locate gmp.hcentos: yum install gmp-devel14、Configure: error: Cannot find MySQL header files under /usr. Note that the MySQL client library is not bundled anymore! yum install mysql-devel (For Redhat & Fedora)# apt-get install libmysql++-dev (For Ubuntu)15、Configure: error: Please reinstall the ncurses distributionSolutions :centos: yum install ncurses ncurses-devel16、Checking for unixODBC support… configure: error: ODBC header file ‘/usr/include/sqlext.h' not found!Solutions :centos: yum install unixODBC-devel17、Configure: error: Cannot find pspellSolutions :centos: yum install pspell-devel18、configure: error: mcrypt.h not found. Please reinstall libmcrypt.Solutions :yum install libmcrypt libmcrypt-devel (For Redhat & Fedora)# apt-get install libmcrypt-dev19、Configure: error: snmp.h not found. Check your SNMP installation.Solutions :yum install net-snmp net-snmp-devel20、开启LDAP服务还需要yum -y install openldap-devel openldap-servers openldap-clients21、configure: error: cannot find output from lex; giving upcentos: yum -y install flex22、configure: error: mod_deflate has been requested but can not be built due to prerequisite failurescentos: yum -y install zlib-devel openssl-develdebian: apt-get install zlib1g-dev以上就是php编译configure常见错误的总结,如有疑问请留⾔或者到本站社区交流讨论,感谢阅读,希望能帮助到⼤家,谢谢⼤家对本站的⽀持!。
PHP注册错误和异常处理机制
PHP注册错误和异常处理机制注册错误和异常处理机制有三个PHP函数需要学习1. register_shutdown_function('Bootstrap\Library\Frame::fatalError');2. set_error_handler('Bootstrap\Library\Frame::appError');3. set_exception_handler('Bootstrap\Library\Frame::appException');1.register_shutdown_function定义:该函数是来注册⼀个会在PHP中⽌时执⾏的函数参数说明:void register_shutdown_function ( callable $callback [, mixed$parameter [, mixed $... ]] )注册⼀个 callback ,它会在脚本执⾏完成或者 exit() 后被调⽤。
callback:待注册的中⽌回调parameter:可以通过传⼊额外的参数来将参数传给中⽌函数PHP终⽌情况有三种执⾏完成<?phpfunction test(){echo '这个是中⽌⽅法test的输出';}register_shutdown_function('test');echo 'before' . PHP_EOL;// => before// => 这个是中⽌⽅法test的输出注意输出的顺序,等执⾏完成了之后才会去执⾏register_shutdown_function的中⽌⽅法test exit/die导致的中⽌<?phpfunction test(){echo '这个是中⽌⽅法test的输出';}register_shutdown_function('test');echo 'before' . PHP_EOL;exit();echo 'after' . PHP_EOL;// => before// => 这个是中⽌⽅法test的输出后⾯的after并没有输出,即exit或者是die⽅法导致提前中⽌。
php 命令执行方法
php 命令执行方法PHP是一种广泛使用的开源脚本语言,用于服务器端脚本编程。
在PHP中,有许多命令可以用来执行不同的操作。
本文将介绍一些常见的PHP命令执行方法。
1. php命令:php命令是在命令行中执行php脚本的基本方法。
在命令行中输入php命令,后面加上要执行的php脚本文件名,即可执行该脚本。
例如,执行test.php脚本的命令为:php test.php。
2. include和require命令:include和require命令用于将一个php文件包含到另一个php文件中。
这两个命令的区别在于,如果包含的文件不存在,include命令会产生一个警告,而require命令会产生一个致命错误。
使用include命令的语法为:include 'filename.php';,使用require命令的语法为:require 'filename.php';。
3. exec命令:exec命令用于在php脚本中执行一个外部命令,并返回命令执行的结果。
使用exec命令的语法为:exec('command', $output, $return_var);,其中,command是要执行的外部命令,$output是一个数组,用于存储命令执行的输出,$return_var是一个变量,用于存储命令执行的返回值。
4. system命令:system命令也用于在php脚本中执行一个外部命令,并返回命令执行的结果。
与exec命令不同的是,system命令会将命令执行的输出直接打印到屏幕上,而不是存储到一个数组中。
使用system命令的语法为:system('command', $return_var);,其中,command是要执行的外部命令,$return_var是一个变量,用于存储命令执行的返回值。
5. passthru命令:passthru命令也用于在php脚本中执行一个外部命令,并返回命令执行的结果。
php获取自定义状态码的方法
php获取自定义状态码的方法
在PHP中,我们可以使用header函数来设置自定义状态码。
header函数用于发送原始的 HTTP 头,包括状态码。
要设置自定义状态码,我们可以使用header函数的第一个参数来指定状态码,然后在第二个参数中提供可选的状态消息。
例如,要设置状态码为404(Not Found),我们可以使用以下代码:
php.
header("HTTP/1.0 404 Not Found");
这将发送一个带有404状态码的HTTP头。
请注意,这应该在任何其他输出之前调用,因为HTTP头必须在输出之前发送。
另一种方法是使用http_response_code函数。
这个函数在PHP 5.4.0及以上版本中可用,它允许我们设置HTTP响应代码。
例如:
php.
http_response_code(404);
这将设置状态码为404。
与header函数不同,
http_response_code函数只能用于设置已知的状态码,不能用于自定义状态消息。
需要注意的是,设置自定义状态码可能会影响浏览器和代理服务器对页面的处理,因此应该谨慎使用。
通常情况下,最好使用标准的HTTP状态码来确保与客户端的兼容性。
总之,在PHP中,我们可以使用header函数或
http_response_code函数来设置自定义状态码,但应该谨慎使用,并尽量遵循标准的HTTP状态码来确保与客户端的兼容性。
ThinkPHP 错误调试和日志
T T h h i i n n k k P P H H P 1 1. .5错 错误 误、 、调 调试 试和 和日 日志 志编写:ThinkPHP 文档组最后更新:20081216目 目录录 11 概述.......................................................................................................................................3 22 异常处理................................................................................................................................3 33 调试模式................................................................................................................................4 44 调试配置................................................................................................................................5 55 日志处理................................................................................................................................6 66 错误记录................................................................................................................................7 7SQL 记录................................................................................................................................8 88 手动记录日志.........................................................................................................................9 99 输出变量..............................................................................................................................10 1 100 输出错误信息....................................................................................................................11 1 111 运行时间和内存占用..........................................................................................................11 112 SQL 调试...........................................................................................................................13 1 13 3 页面 Trace. (13)1 概述本文系统的描述了ThinkPHP中的异常和错误处理,调试模式的相关使用,以及日志的处理。
Php安装错误提示及解决办法
Php安装错误提示及解决办法configure: error: Could not find net-snmp-config binary. Please check your net-snmp installation.代码如下:yum -y install net-snmp-develconfigure: error: Please reinstall readline - I cannot find readline.h代码如下:yum -y install readline-develconfigure: error: Cannot find pspell代码如下:yum -y install aspell-develchecking for unixODBC support... configure: error: ODBC header file '/usr/include/sqlext.h' not found!代码如下:yum -y install unixODBC-develconfigure: error: Unable to detect ICU prefix or /usr/bin/icu-config failed. Please verify ICU install prefix and make sure icu-config works.代码如下:yum -y install libicu-develconfigure: error: utf8mime2text() has new signature, but U8TCANONICAL is missing. This should not happen. Check config.log for additional information.代码如下:yum -y install libc-client-develconfigure: error: freetype.h not found.代码如下:yum -y install freetype-develconfigure: error: xpm.h not found.代码如下:yum -y install libXpm-develconfigure: error: png.h not found.代码如下:yum -y install libpng-develconfigure: error: vpx_codec.h not found.代码如下:yum -y install libvpx-develconfigure: error: Cannot find enchant代码如下:yum -y install enchant-develconfigure: error: Please reinstall the libcurl distribution - easy.h should be in /include/curl/代码如下:yum -y install libcurl-develconfigure: error: utf8_mime2text() has new signature, but U8T_CANONICAL is missing. 代码如下:yum -y install libc-client-develCannot find ldap.h代码如下:yum -y install openldapyum -y install openldap-develconfigure: error: Cannot find ldap libraries in /usr/lib代码如下:cp -frp /usr/lib64/libldap* /usr/lib/configure: error: Cannot find libpq-fe.h. Please specify correct PostgreSQL installation path代码如下:yum -y install postgresql-develconfigure: error: Please reinstall the lib curl distribution代码如下:yum -y install curl-develconfigure: error: Could not find net-snmp-config binary. Please check your net-snmp installation.代码如下:yum -y install net-snmp-develconfigure: error: xslt-config not found. Please reinstall the libxslt >= 1.1.0 distribution代码如下:yum -y install libxslt-develchecking for BZip2 support… yes checking for BZip2 in default path… not found configure: error: Please reinstall the BZip2 distributionFix:代码如下:yum -y install bzip2-develchecking for cURL support… yes checking if we should use cURL for url streams… no checking for cURL in default path… not found configure: error: Please reinstall the libcurl distribution – easy.h should be in/include/curl/Fix:代码如下:yum -y install curl-develchecking for curl_multi_strerror in -lcurl… yes checking for QDBM support… no checking for GDBM support… no checking for NDBM support… no configure: error: DBA: Could not find necessary header file(s).Fix:代码如下:yum -y install db4-develchecking for fabsf… yes checking for floorf… yes configure: error: jpeglib.h not found.Fix:代码如下:yum -y install libjpeg-develchecking for fabsf… yes checking for floorf… yes checking for jpeg_read_header in -ljpeg… yes configure: error: png.h not found.Fix:代码如下:yum -y install libpng-develchecking for utf8_mime2text signature… new checking for U8T_DECOMPOSE… configure: error: utf8_mime2text() has new signature, but U8T_CANONICAL is missing. This should not happen. Check config.log for additional information.Fix:代码如下:yum -y install libc-client-develchecking for LDAP support… yes, shared checking for LDAP Cyrus SASL support… yes configure: error: Cannot find ldap.hFix:代码如下:yum -y install openldap-develchecking for mysql_set_character_set in -lmysqlclient… yes checking for mysql_stmt_next_result in -lmysqlclient… no checking for Oracle Database OCI8 support… no checking for unixODBC support… configure: error: ODBC header file ‘/usr/include/sqlext.h' not found!Fix:代码如下:yum -y install unixODBC-develchecking for PostgreSQL support for PDO… yes, shared checking for pg_config… not found configure: error: Cannot find libpq-fe.h. Please specify correct PostgreSQL installation pathFix:代码如下:yum -y install postgresql-develchecking for sqlite 3 support for PDO… yes, shared checking for PDO includes… (cached) /usr/local/src/php-5.3.7/ext checking for sqlite3 files in default path… not found configure: error: Please reinstall the sqlite3 distributionFix:代码如下:yum -y install sqlite-develchecking for utsname.domainname… yes checking for PSPELL support… yes config ure: error: Cannot find pspellFix:代码如下:yum -y install aspell-develchecking whether to enable UCD SNMP hack… yes checking for default_store.h… nochecking for kstat_read in -lkstat… no checking for snmp_parse_oid in -lsnmp… no checking for init_snmp in -lsnmp… no configure: error: SNMP sanity check failed. Please check config.log for more information.Fix:代码如下:yum -y install net-snmp-develchecking whether to enable XMLWriter support… yes, shared checking for xml2-config path… (cached) /usr/bin/xml2-config checking whether libxml build works… (cached) yes checking for XSL support… yes, shared configure: error: xslt-config not found. Please reinstall the libxslt >= 1.1.0 distributionFix:代码如下:yum -y install libxslt-develconfigure: error: xml2-config not found. Please check your libxml2 installation.Fix:代码如下:yum -y install libxml2-devel。
php中的错误的配置有哪些
php中的错误的配置有哪些php中的有关错误的配置有哪些在php中的有关错误的配置有哪些?我们需要了解的是什么?下面是店铺精心为大家整理的PHP的错误机制总结,希望对大家有帮助,更多内容请关注应届毕业生网!// Strict Standards: Only variables should be passed by reference in /tmp/php/index.php on line 17function change (&$var) {$var += 10;}$var = 1;change(++$var);// E_STRICTE_RECOVERABLE_ERROR这个级别其实是ERROR级别的,但是它是期望被捕获的,如果没有被错误处理捕获,表现和E_ERROR是一样的。
经常出现在形参定义了类型,但调用的时候传入了错误类型。
它的错误提醒也比E_ERROR的fatal error前面多了一个Catachable的字样。
//Catchable fatal error: Argument 1 passed to testCall() must be an instance of A, instance of B given, called in /tmp/php/index.php on line 37 and defined in /tmp/php/index.php on line 33class A {}class B {}function testCall(A $a) {}$b = new B();testCall($b);E_DEPRECATED这个错误表示你用了一个旧版本的函数,而这个函数后期版本可能被禁用或者不维护了。
比如curl的CURLOPT_POSTFIELDS使用\@FILENAME来上传文件的方法// Deprecated: curl_setopt(): The usage of the @filename API for file uploading is deprecated. Please use the CURLFile class instead in /tmp/php/index.php on line 42$ch = curl_init("/upload.php");curl_setopt($ch, CURLOPT_POSTFIELDS, array('fileupload' => '@'. "test"));E_CORE_ERROR, E_CORE_WARNING这两个错误是由PHP的引擎产生的,在PHP初始化过程中发生。
PHP错误和异常处理
PHP错误和异常处理⽬录:⼀、前⾔⼆、错误级别三、⾃定义PHP中的错误处理⽅法四、⾃定义异常处理⼀、前⾔:PHP中的错误是什么:由于php脚本⾃⾝的问题,⼤部分情况是由错误的语法,服务器环境导致,使得编译器⽆法通过检查,甚⾄⽆法运⾏的情况。
像warning、notice、fatal 都是错误,只是他们的级别不同⽽已,并且错误是不能被try-catch捕获的。
在写PHP程序时,我们基本上使⽤的是PHP语⾔中系统⾃定义的报错⽅式,例如例1:在PHP安装⽬录中查找并打开配置⽂件php.ini,设置display_errors的值删除前⾯的分号,并设置值为on例2:在PHP代码中设置ini_set('error_reporting', E_ALL );ini_set('display_errors', 'on' );附上error_reporting所有参数定义参数说明error_reporting(0)关闭错误报告error_reporting(E_ERROR | E_WARNING | E_PARSE)报告 runtime 错误error_reporting(E_ALL)报告所有错误ini_set("error_reporting", E_ALL)等同 error_reporting(E_ALL)error_reporting(E_ALL & ~E_NOTICE)报告 E_NOTICE 之外的所有错误⼆、错误级别级别具体值Fatal Error致命错误(脚本终⽌运⾏)E_ERROR // 致命的运⾏错误,错误⽆法恢复,暂停执⾏脚本E_CORE_ERROR // PHP启动时初始化过程中的致命错误E_COMPILE_ERROR // 编译时致命性错,就像由Zend脚本引擎⽣成了⼀个E_ERRORE_USER_ERROR // ⾃定义错误消息。
PHP异常处理定义与使用方法
PHP异常处理定义与使用方法PHP异常处理定义与使用方法PHP语法吸收了C语言、Java和Perl的特点,利于学习,使用广泛,主要适用于Web开发领域。
下面是店铺分享的PHP异常处理定义与使用方法,一起来看一下吧。
<?php//php5提供了基本的异常处理类,可直接使用,不需要自己再定义// class Exception// {// protected $message = 'Unknown exception'; // 异常信息// protected $code = 0; // 用户自定义异常代码// protected $file; // 发生异常的文件名// protected $line; // 发生异常的代码行号// function __construct($message = null, $code = 0);// final function getMessage(); // 返回异常信息// final function getCode(); // 返回异常代码// final function getFile(); // 返回发生异常的文件名// final function getLine(); // 返回发生异常的代码行号// final function getTrace(); // backtrace() 数组// final function getTraceAsString(); // 已格成化成字符串的getTrace() 信息// /* 可重载的方法 */// function __toString(); // 可输出的字符串// }><?php//定义一个顶级异常处理function my_exception($e){echo "我是顶级异常处理".$e->getMessage();}//修改默认的顶级异常处理函数(器)set_exception_handler("my_exception");//我们使用异常机制try{addUser("shunping");updateUser("xiaoming1");}//catch用来捕获异常, Exception 是异常类(是php定义好一个类)catch(Exception $e){//返回异常信息echo "返回异常信息(失败信息)=".$e->getMessage()."<br/>";echo "返回异常代码 =".$e->getCode()."<br/>";echo "返回发生异常的文件名 =".$e->getFile()."<br/>";echo "返回发生异常的代码行号 =".$e->getLine()."<br/>";//echo " =".$e->getTrace()."<br/>"; // backtrace() 数组//可以继续抛出,这时将会启动php默认的异常处理器来处理//你也可以自己定义一个顶级异常处理器,对其进行处理throw $e;}function addUser($username){if($username=="shunping"){//添加okecho "ok1";}else{//添加error//抛出异常.throw new Exception("添加失败");}}function updateUser($username){if($username=="xiaoming"){//正常修改echo "ok2";}else{//平抛出异常throw new Exception("修改失败");}}>异常使用的注意事项:通过上面的'案例,我们可以看出,使用try{//代码}catch(Exception $e){//对异常处理}这种方式,可以更有效的控制错误.所以在开发中大量的使用.1. 当捕获到一个异常后,try{} 块里的后续代码不继续执行.2. 如果有一个异常发生,但是你没有catch 捕获,则提示一个Uncaught Exception.(系统.)3. 当catch一个异常,你可以处理,也可以不处理,不处理就可以throw new Exception("信息");4. 你可以自定义异常类class MyException extends Exception {}5. 使用多个 catch 代码块可以捕获不同种类的异常try{//代码....//第一句话//第二句话}catch(PDOException $e){//}catch(Exception $e){|}6. 也可简单使用 Exception 捕获代码说明:<?php//定义了一个异常class MyException1 extends Exception{}class MyException2 extends Exception{}function A(){throw new MyException1("a");}function B(){throw new MyException2("b")}function C(){try{A();//抛出MyException1B();//抛出MyException2}catch(Exception1 $e1){$e1->getMessage();}catch(Exception2 $e2){$e2->getMesage();}}>异常的规则需要进行异常处理的代码应该放入try 代码块内,以便捕获潜在的异常。
php获取错误信息的方法
$er=$ar[$ers['type']].$ers['type'].': '.' '.$ers['message'].' => '.$ers['file'].' line:'.$ers['line'].' '.date('Y-m-d H:i:s')."\n"; error_log($er,3,'/tmp/php_error.log'); } }); set_error_handler(function($a,$b,$c,$d) use ($ar){ if($a!=8 && $a){ $er=$ar[$a].$a.': '.$b.' => '.$c.' line:'.$d.' '.date('Y-m-d H:i:s')."\n"; error_log($er,3,'/tmp/php_error.log'); } },E_ALL ^ E_NOTICE); }
php出现文件锁与mysql表锁有大概想的用法就是同一时间只能让一个人操作这样就避免了同时有多个人操作同一文件这样导致数据丢失的情况了下面我来给大家介绍php文件锁用法
php获 取 错 误 信 பைடு நூலகம் 的 方 法
本文实例讲述了php获取错误信息的方法。分享给大家供大家参考。具体如下:
function error_reg(){ $ar=array( E_ERROR => 'error', E_WARNING => 'warning', E_PARSE =>'prase', E_NOTICE => 'notice' ); register_shutdown_function(function() use ($ar){ $ers=error_get_last(); if($ers['type']!=8 && $ers['type']){
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
欢迎登录清源教育官网查看更多视频教程
PHP 解决Invalid argument supplied for foreach()报错
问题Warning: Invalid argument supplied for foreach() in 完善解决方案
将报错的语句做如下修改(例):
把
foreach($extcredits as $id => $credit)
{
if($credit['ratio'])
{
$exchcredits[$id] = $credit;
}
}
改为
if(is_array($extcredits)) //add
{
foreach($extcredits as $id => $credit)
{
if($credit['ratio'])
{
$exchcredits[$id] = $credit;
}
}
} //add
或
foreach((array)$extcredits as $id => $credit)
{
if($credit['ratio'])
{
$exchcredits[$id] = $credit;
}
}
造成这个错误的原因多数是因为升级、编码转换造成的!
如果对PHP熟悉的人,可以直接找到出错的地方,分析出错信息是对哪个数据库表操作时造成的(一般都是论坛的基本数据表),然后,找到相应表的原版数据导进去,问题可解决。
如果对PHP不熟悉的人,可以按出错信息提示的位置进行修改,问题可解决。
来源:清源教育。