iis中,php如何显示运行错误 我是用了win2003系统,现在运行php代码,如果有错,页面就是什么内容都不显示,如何设置可以显示运行错误,比如提示哪一行代码有什么错误! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 你在代码前面设置error_reporting(E_ALL);再试试 开发时显示PHP的错误消息对开发人员来说是个明智的选择,所谓工具是使人方便的,就是如此。 下面来说说显示PHP错误提示消息的三个方法。 一:php.ini配置 php.ini配置中与此相关的有两个配置变量。下面是这两个变量及其默认值:QUOTE:display_errors = Offerror_reporting = E_ALL & ~E_NOTICE display_errors 变量的目的很明显 ―― 它告诉PHP是否显示错误。默认值是 Off。现在我们的目的是显示错误提示,那么:QUOTE:display_errors = On E_ALL,这个设置会显示从不良编码实践到无害提示到出错的所有信息。E_ALL 对于开发过程来说有点太细,因为它连变量未初始化也显示提示,而这一点正是PHP“高级”的一个特征。幸好,error_reporting的默认值是“E_ALL & ~E_NOTICE”,这样就只看到错误和不良编码了,对程序无不利的提示则不会显示。 修改php.ini后需要重新启动Apache,这样才可以在apache中生效,当然你如果只在命令行下测试程序,是不需要这一步的。 二:Apache的httpd.conf和.htaccess配置 如果要在.htaccess 文件中的指令来修改 PHP 的配置设定。需要有“AllowOverride Options”或“AllowOverride All”权限才可以。 请参见:AllowOverride 指令http://lamp.linux.gov.cn/Apache/ ... .html#allowoverride AllowOverride指令确定允许存在于.htaccess文件中的指令类型,它仅在不包含正则表达式的配置段中才是有效的。 如果此指令被设置为None ,那么.htaccess文件将被完全忽略。事实上,服务器根本不会读取.htaccess文件。 当此指令设置为 All时,所有具有".htaccess"作用域的指令都允许出现在.htaccess文件中。 例如以下指令只允许在.htaccess中使用AuthConfig和Indexes组的指令:QUOTE:AllowOverride AuthConfig Indexes .htaccess里的设置和httpd.conf是一样的。 要在做在httpd.conf实现这一功能,需要把下列各行添加到 httpd.conf,以覆盖php.ini文件做出的配置:QUOTE:php_flag display_errors onphp_value error_reporting 2039 这会覆盖在 php.ini 文件中为 display_errors 已经设置的标志,以及 error_reporting 的值。值 2039 代表 E_ALL & ~E_NOTICE。如果愿意采用 E_ALL,请把值设为 2047。同样,还是要重启 Apache。 httpd.conf对php宏定义设置的具体用法可以参见:http://www.php.net/manual/zh/configuration.changes.php 你可以注意到,上面我们没有使用“E_ALL & ~E_NOTICE”这样的宏定义。这是因为这些宏定义都是php的变量,apache是不认识的,所以我们使用与其等同的值来设置。相关的信息和说明请见:http://www.php.net/manual/zh/ref ... errorfunc.constants 下面给出一个简单的对应值:QUOTE:值 宏定义 1 E_ERROR 2 E_WARNING 4 E_PARSE 8 E_NOTICE 16 E_CORE_ERROR 32 E_CORE_WARNING 64 E_COMPILE_ERROR 128 E_COMPILE_WARNING 256 E_USER_ERROR 512 E_USER_WARNING 1024 E_USER_NOTICE 6143 E_ALL 2048 E_STRICT 4096 E_RECOVERABLE_ERROR 三:程序中改变 以上所介绍的都是配置文件里面做设置,如果你没有这个权限,或者只想测试一个程序,那么你可以使用两个函数来做到这一点。 它们分别是:以下是引用片段:QUOTE:string ini_set ( string $varname , string $newvalue )int error_reporting ([ int $level ] ) 两个函数大同小异,error_reporting()看上去是ini_set()的error_reporting功能版。事实上我认为也的确如此。 在ini_set()中你可以设置display_errors和error_reporting的值,而在error_reporting()中你只能设置error_reporting的值,也就是说,如果服务器默认不显示错误提示,你在error_reporting()中怎么变换都是不管用的。两个函数的参数都可以参见上面提到的数字--宏定义对应值。 需要注意,以上两个函数的适用用时间为该函数起,一直到程序结束。它们不会影响到其他的程序。 最后:关于PHP的宏定义 最后,仍需要说明一点:无论httpd.conf还是ini_set()所设置的宏定义并不是无限的,更多的宏定义值请参看手册中的“php.ini 配置选项列表”:http://www.php.net/manual/zh/ini.php 在里面列表中有一列为“可修改范围”,里面的值为PHP_INI_* ,所以在使用时需要看清宏定义的可修改范围。在列表的末尾,手册中有提示:QUOTE:PHP_INI_* 常量的定义 常量 值 含义 PHP_INI_USER 1 配置选项可在用户的 PHP 脚本或 Windows 注册表中设置 PHP_INI_PERDIR 2 配置选项可在 php.ini, .htaccess 或 httpd.conf 中设置 PHP_INI_SYSTEM 4 配置选项可在 php.ini or httpd.conf 中设置 PHP_INI_ALL 7 配置选项可在各处设置 信息来源:http://www.phpfans.net/ask/discuss4/533673723.html 一般设置为以下几种:error_reporting(E_ALL);error_reporting(7);error_reporting(0); 请帮我看下这个网站是不是用php开发的? php再次时间问题求助 除了要开启GD2以外,还有什么会影响PHP生成图片 火星无罪~~~!!!请问服务器问题 PHP for循环小数出现的问题 唠叨大哥请进~~!各位老大请进~~~! 新手问题! 请教:如何判断是否是新文章? -_-_-_-_-_-_-相似函数的讨论_-_-_-_-_-_-_-_-_ 模拟登陆 需要输入验证码 关于二级域名解析的问题, 变三个内裤了?
QUOTE:
display_errors = Off
error_reporting = E_ALL & ~E_NOTICE
display_errors 变量的目的很明显 ―― 它告诉PHP是否显示错误。默认值是 Off。现在我们的目的是显示错误提示,那么:
QUOTE:
display_errors = On
E_ALL,这个设置会显示从不良编码实践到无害提示到出错的所有信息。E_ALL 对于开发过程来说有点太细,因为它连变量未初始化也显示提示,而这一点正是PHP“高级”的一个特征。幸好,error_reporting的默认值是“E_ALL & ~E_NOTICE”,这样就只看到错误和不良编码了,对程序无不利的提示则不会显示。 修改php.ini后需要重新启动Apache,这样才可以在apache中生效,当然你如果只在命令行下测试程序,是不需要这一步的。 二:Apache的httpd.conf和.htaccess配置 如果要在.htaccess 文件中的指令来修改 PHP 的配置设定。需要有“AllowOverride Options”或“AllowOverride All”权限才可以。 请参见:AllowOverride 指令http://lamp.linux.gov.cn/Apache/ ... .html#allowoverride AllowOverride指令确定允许存在于.htaccess文件中的指令类型,它仅在不包含正则表达式的配置段中才是有效的。 如果此指令被设置为None ,那么.htaccess文件将被完全忽略。事实上,服务器根本不会读取.htaccess文件。 当此指令设置为 All时,所有具有".htaccess"作用域的指令都允许出现在.htaccess文件中。 例如以下指令只允许在.htaccess中使用AuthConfig和Indexes组的指令:
QUOTE:
AllowOverride AuthConfig Indexes
.htaccess里的设置和httpd.conf是一样的。 要在做在httpd.conf实现这一功能,需要把下列各行添加到 httpd.conf,以覆盖php.ini文件做出的配置:
QUOTE:
php_flag display_errors on
php_value error_reporting 2039
这会覆盖在 php.ini 文件中为 display_errors 已经设置的标志,以及 error_reporting 的值。值 2039 代表 E_ALL & ~E_NOTICE。如果愿意采用 E_ALL,请把值设为 2047。同样,还是要重启 Apache。 httpd.conf对php宏定义设置的具体用法可以参见:http://www.php.net/manual/zh/configuration.changes.php 你可以注意到,上面我们没有使用“E_ALL & ~E_NOTICE”这样的宏定义。这是因为这些宏定义都是php的变量,apache是不认识的,所以我们使用与其等同的值来设置。相关的信息和说明请见:http://www.php.net/manual/zh/ref ... errorfunc.constants 下面给出一个简单的对应值:
QUOTE:
值 宏定义
1 E_ERROR
2 E_WARNING
4 E_PARSE
8 E_NOTICE
16 E_CORE_ERROR
32 E_CORE_WARNING
64 E_COMPILE_ERROR
128 E_COMPILE_WARNING
256 E_USER_ERROR
512 E_USER_WARNING
1024 E_USER_NOTICE
6143 E_ALL
2048 E_STRICT
4096 E_RECOVERABLE_ERROR
三:程序中改变 以上所介绍的都是配置文件里面做设置,如果你没有这个权限,或者只想测试一个程序,那么你可以使用两个函数来做到这一点。 它们分别是:以下是引用片段:
QUOTE:
string ini_set ( string $varname , string $newvalue )int error_reporting ([ int $level ] )
两个函数大同小异,error_reporting()看上去是ini_set()的error_reporting功能版。事实上我认为也的确如此。 在ini_set()中你可以设置display_errors和error_reporting的值,而在error_reporting()中你只能设置error_reporting的值,也就是说,如果服务器默认不显示错误提示,你在error_reporting()中怎么变换都是不管用的。两个函数的参数都可以参见上面提到的数字--宏定义对应值。 需要注意,以上两个函数的适用用时间为该函数起,一直到程序结束。它们不会影响到其他的程序。 最后:关于PHP的宏定义 最后,仍需要说明一点:无论httpd.conf还是ini_set()所设置的宏定义并不是无限的,更多的宏定义值请参看手册中的“php.ini 配置选项列表”:http://www.php.net/manual/zh/ini.php 在里面列表中有一列为“可修改范围”,里面的值为PHP_INI_* ,所以在使用时需要看清宏定义的可修改范围。在列表的末尾,手册中有提示:
QUOTE:
PHP_INI_* 常量的定义
常量 值 含义
PHP_INI_USER 1 配置选项可在用户的 PHP 脚本或 Windows 注册表中设置
PHP_INI_PERDIR 2 配置选项可在 php.ini, .htaccess 或 httpd.conf 中设置
PHP_INI_SYSTEM 4 配置选项可在 php.ini or httpd.conf 中设置
PHP_INI_ALL 7 配置选项可在各处设置 信息来源:http://www.phpfans.net/ask/discuss4/533673723.html
error_reporting(E_ALL);
error_reporting(7);
error_reporting(0);