PHP调试总结

PHP调试总结
一,环境方面,比如查看安装扩展是否生效,是总支持某扩展。
可以在web目录中建一个phpinfo.php
在里面输入
<?php
phpinfo();
?>
在浏览器上访问一下,会输出PHP相关环境和模块信息。

二,代码错误信息调试。
1,通过设置display_errors,控制PHP发生错误时是否输出错误信息,一般开发环境,可以打开,正式线上环境要关闭。
打开方式:
1),通信修改php.ini文件中的display_errors,如果是Off表示在出错时不输出错误信息,开发环境可以改成:display_errors = On,然后重启apache
2),在PHP代码中开启:在代码开头加上:ini_set("display_errors", "On");
任何需要在php.ini中修改的选项,都可以使用ini_set的方式在代码中修改。

2,设置错误级别
使用error_reporting函数设置错误级别,与上面一样,同样可以修改php.ini或者在代码中设置,这里以代码中设置为例。
error_reporting(0);//禁用错误报告
error_reporting(E_ALL ^ E_NOTICE);//显示除去 E_NOTICE 之外的所有错误信息
error_reporting(E_ALL^E_WARNING^E_NOTICE);//显示除去E_WARNING E_NOTICE 之外的所有错误信息
error_reporting(E_ERROR | E_WARNING | E_PARSE);//显示运行时错误,与error_reporting(E_ALL ^ E_NOTICE);效果相同。error_reporting(E_ALL);//显示所有错误

一般来说,notice类错误,可以忽略所以常用
error_reporting(E_ALL ^ E_NOTICE);

综合以上两点,通常开发都会在入口文件前面加上这两行,例如:
<?php
//定义一个常量,是否开启调试模式。
define( ‘DEBUG‘ , true );
//如果开启,则打开错误输出和设置错误别为notice以外的,都输出。
if( DEBUG )
{
error_reporting( E_ALL ^ E_NOTICE );
ini_set( ‘display_errors‘ , ‘On‘ );
}
//如果非调试模式,则关闭错误输出和设置错误别为不输出。
else
{
error_reporting( 0 );
ini_set( ‘display_errors‘ , ‘Off‘ );
}

3, 编码问题
开发文档编码和浏览器输出编码,以后mysql编码,统一设置为utf-8格式。
1,notepad++和zend studio都可设置,具体可以百度。
2,输出设置在代码中最前面加上。
header( "Content-type:text/html;charset=utf-8" )

总结:
一般在开发时,在文件执行的开头。加上这一段。
<?php
header( "Content-type:text/html;charset=utf-8" );
define( ‘DEBUG‘ , true );
if( DEBUG )
{
error_reporting( E_ALL ^ E_NOTICE );
ini_set( ‘display_errors‘ , ‘On‘ );
}
else
{
error_reporting( 0 );
ini_set( ‘display_errors‘ , ‘Off‘ );
}

//你的其它代码

?>

时间: 2024-09-29 23:52:28

PHP调试总结的相关文章

Linux下GDB调试与对拍(先挖个坑)

应为NOIP要复赛在NOI-Linux下编写程序,所以被迫选择Vim+Gdb(主要是Guide太丑了). 虽然GUIDE的调试功能已经对付大多数的调试,反正学一学GDB的使用也没什么坏处. 1 生成调试信息 要调试C/C++的程序,首先在编译时,我们必须要把调试信息加到可执行文件中.使用编译器(cc/gcc/g++)的 -g 参数可以做到这一点.如: gcc -g hello.c -o hello g++ -g hello.cpp -o hello 如果没有-g,你将看不见程序的函数名.变量名,

微信开发之本地接口调试(非80端口,无需上传服务器服务器访问

前言: 本文是总结在开发微信接口时,为方便开发所采取的一些快捷步骤,已节省开发人员难度开发时间从而提高开发效率. 本地测试: (提醒,在本地模拟微信get或post数据时先将校验参数注释掉) 利用微信模拟器weixinPost进行模拟发送xml数据 由于这个软件是微信没公开高级接口时公布的,所以对于高级接口的调试,笔者利用的是Fiddler这个抓包工具模拟post数据 高端测试: 利用反向代理软件ngrok访问本地项目: ngrok 是一个反向代理,通过在公共的端点和本地运行的 Web 服务器之

PHPStorm调试PHP代码~实际操作+mark~~

因为wamp自己已经下载了xdebug,只要配置开启就行了. 1. 配置php.ini(有就打开注释,没有就加上) XDEBUG Extension[xdebug]zend_extension ="D:/wamp64/bin/php/php5.6.25/zend_ext/php_xdebug-2.4.1-5.6-vc11-x86_64.dll"xdebug.remote_enable = 1;远程主机xdebug.remote_host = localhost;主机端口xdebug.r

Tomcat配置远程调试端口(windows、Linux)

当我们需要定位生产环境问题,而日志又不清晰的情况下,我们可以借助Tomcat提供的远程调试,设置如下: // Linxu系统: apach/bin/startup.sh开始处中增加如下内容: declare -x CATALINA_OPTS="-server -Xdebug -Xnoagent -Djava.compiler=NONE -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=8081" // Windows系统:

Android APP 调试过程中遇到的问题。

调试过过程中APP安装完启动后有的时候会异常退出,报这个错误.有的时候可以直接启动.查找不到原因.网上说把commit方法替换成commitAllowingStateLoss() 也无效. Android APP 调试过程中遇到的问题. >> android 这个答案描述的挺清楚的:http://www.goodpm.net/postreply/android/1010000007192169/AndroidAPP调试过程中遇到的问题.html

Linux-hexdump命令调试event驱动—详解(13)

hexdump: 查看文件的内容,比如二进制文件中包含的某些字符串,通常用来调试驱动用 1.调试 键盘驱动 讲解 当我们insmod挂载了键盘驱动后,找到键盘驱动被放在event1设备里, 此时没有按键按下,所以event1里面的数据是没有的,那么数据又是从来哪里来? 通过键盘驱动的read函数,若有按键按下,就会上传按键数据给用户层,此时的用户层就是hexdump 因为键盘驱动的input_handler 是:evdev_handler 所以键盘驱动的read函数是: evdev_handle

调试信息的完成

gdb中-x是为了实现通过文件的初始化gdb GAS(gcc)(AT&T 语法),NASM(Intel 语法) 当boot loader 引导操作系统的时候,机器必须有如下的状态: EAX: 必须包含魔数OX2BADB002,这个值告诉操作系统目前它是由兼容的Multiboot 的boot loader 引导的. EBX: 必须包含boot loader 提供的多重引导信息结构(见3.3 节多重信息引导结构)的32位物理地址. CS: 必须是32 位的读/执行的代码段,偏移是0 以及界限是 0X

gdb调试

[前言]使用gdb调试前,在编译程序时,要加 -g 选项,否则你将看不见程序的函数名.变量名,所代替的全是运行时的内存地址. 1.开始调试 a.  gdb <program> program也就是你的执行文件,一般在当前目录下. b. gdb <program> core 用gdb同时调试一个运行程序和core文件,core是程序非法执行后core dump后产生的文件. 2.[列出源码],从第n行开始(编译时要加 -g 选项) l n 3.[设置断点]在第N行加断点 break

WebPack+WebStorm调试

怎么用webstorm来调试WebPack? 今天查了很多文档,最终在官网上耐心看完英文文档后,才解决.附上链接:https://blog.jetbrains.com/webstorm/2015/09/debugging-webpack-applications-in-webstorm/ 工具简介 Windows7 WebStorm2017 Webpack2 谷歌浏览器(默认浏览器) 操作 在Project视图里找到index.html,右击进入Debug模式 WebStrom会自动进入Debu

VS2013 VS2015 VS2017调试出现无法启动iis express web服务器

最近老是遇到这个问题,天天如此,烦死人,网上答案繁多,但是都解决不了,也是由于各种环境不同导致的,这里把几种解决方法都记录下 一.其他项目都可以,就这么一个不行 因为其他项目都可以,就这么一个不行,所以基本就是配置问题,网上的办法都试了,我试了都没用,现在说说我的解决办法 用记事本或者其他什么文本编辑器,打开项目的.csproj文件,定位到<WebProjectProperties>,把关于IIS的配置<DevelopmentServerPort>.<DevelopmentS