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' );
}

//你的其它代码

?>

PHP调试总结的更多相关文章

  1. C# Web应用调试开启外部访问

    在用C#开发Web应用时有个痛点,就是本机用VS开启Web应用调试时外部机器无法访问此Web应用.这里将会介绍如何通过设置允许局域网和外网机器访问本机的Web应用. 目录 1. 设置内网访问 2. 设 ...

  2. NodeJs之调试

    关于调试 当我们只专注于前端的时候,我们习惯性F12,这会给我们带来安全与舒心的感觉. 但是当我们使用NodeJs来开发后台的时候,我想噩梦来了. 但是也别泰国担心,NodeJs的调试是很不方便!这是 ...

  3. 微信公众号开发之VS远程调试

    目录 (一)微信公众号开发之VS远程调试 (二)微信公众号开发之基础梳理 (三)微信公众号开发之自动消息回复和自定义菜单 前言 微信公众平台消息接口的工作原理大概可以这样理解:从用户端到公众号端一个流 ...

  4. 写出易调试的SQL(修订版)

    h4 { background: #698B22 !important; color: #FFFFFF; font-family: "微软雅黑", "宋体", ...

  5. tomcat开发远程调试端口以及利用eclipse进行远程调试

    一.tomcat开发远程调试端口 方法1 WIN系统 在catalina.bat里:  SET CATALINA_OPTS=-server -Xdebug -Xnoagent -Djava.compi ...

  6. Hawk 4.7 单步调试

    单步调试的意义 已经编写的工作流,可能会因为某些外界环境的变化而出错,此时需要排除错误,我们可以使用单步调试. 单步调试的本质,相当于只使用前n个模块,这样就能看到每个步骤下,流的改变. 例子 还是上 ...

  7. Visual Studio 2012远程调试中遇到的问题

    有的时候开发环境没问题的代码在生产环境中会某些开发环境无法重现的问题,或者需要对生产环境代码进行远程调试该怎么办? Vs已经提供给开发者远程调试的工具 下面简单讲讲该怎么用,前期准备:1.本地登录账户 ...

  8. iOS逆向工程之Hopper+LLDB调试第三方App

    LLDB是Low Level Debugger的简称,在iOS开发的调试中LLDB是经常使用的,LLDB是Xcode内置的动态调试工具.使用LLDB可以动态的调试你的应用程序,如果你不做其他的额外处理 ...

  9. 写出易调试的SQL

    h4 { background: #698B22 !important; color: #FFFFFF; font-family: "微软雅黑", "宋体", ...

  10. linux应用调试技术之GDB和GDBServer

    1.调试原理 GDB调试是应用程序在开发板上运行,然后在PC机上对开发板上得应用程序进行调试,PC机运行GDB,开发板上运行GDBServer.在应用程序调试的时候,pc机上的gdb向开发板上的GDB ...

随机推荐

  1. LintCode Balanced Binary Tree

    Given a binary tree, determine if it is height-balanced. For this problem, a height-balanced binary ...

  2. .vimrc常用

    vim 的環境設定參數   :set nu:set nonu 行号 :set tabstop=4 :set softtabstop=4 :set shiftwidth=4 tab :set hlsea ...

  3. 使用pip安装python插件的时候出现Microsoft Visual C++ 9.0缺失错误

    使用pip安装python插件的时候出现Microsoft Visual C++ 9.0缺失错误 使用pip安装python插件的时候出现Microsoft Visual C++ 9.0缺失错误 : ...

  4. Android学习四:数据库操作

    1前言 android中使用SQLite作为数据库,在进行相关的开发的时候不需要导入包.SQLite起符合SQL标准,也有自己的一些特性,是一个轻量级的数据库. 2代码 简单的数据库类封装 packa ...

  5. 获取 .net framework 路径

    要获取当前程序所使用的.netframework路径: System.Runtime.InteropServices.RuntimeEnvironment.GetRuntimeDirectory(); ...

  6. 从头开始linux-centos

    测试环境,下面二者之一CentOS-6.5-x86_64-minimal.isoCentOS-7-x86_64-Minimal-1511.iso 第一步系统检测与优化,即初始化工作,常规型的 rpm ...

  7. HTTP POST GET详解

    get /shang/a1.php http/1.1 host: localhost                           POST /shang/a1.php HTTP/1.1 Hos ...

  8. HDFS文件读写过程

    参考自<Hadoop权威指南> [http://www.cnblogs.com/swanspouse/p/5137308.html] HDFS读文件过程: 客户端通过调用FileSyste ...

  9. Content is not allowed in prolog.解决方法

    将xml配置文件利用记事本另存为Anis编码的文件可以解决.

  10. int和NSInteger区别

    NSInteger会自动根据操作系统的位数(32或者64位)返回最大的类型 查到c语言中,int和long的字节数是和操作系统指针所占位数相等. 但c语言中说,long的长度永远大于或等于int ob ...