zoukankan      html  css  js  c++  java
  • 如何调试PHP程序

    一、PHP自带的调试功能

     

    1、修改php.ini

     

    1开发环境

    需要打开报错输出显示,方便开发者调试。

    1. display_errors = On

    2生产环境

    不能直接将错误输出,而是记入日志,以免透露路径、数据库连接、数据表等信息遭到黑客攻击。

    1. display_errors = Off
    2. log_errors = On
    3. error_log = /path/

    注:

     

    路径方式

    是否append

    如果目录指向的文件不存在

    error_log = php_errors.log

    相对路径

    自动创建

    error_log = E:/phpStudy/php53n/php_errors.log

    绝对路径

    自动创建

    2、利用PHP file_put_contents() 函数

    1. $a = 123;
    1. file_put_contents("error.log", "a is : " . $a . PHP_EOL, FILE_APPEND);

     

    --------------------------------------------- 
    注1:如果目录指向的文件不存在怎么办?

      会自动创建。
    
    --------------------------------------------- 
    注2:PHP_EOL是什么?

      换行符。

      unix系列用

      windows系列用

      mac用

      PHP中可以用PHP_EOL来替代,以提高代码的源代码级可移植性。

    ---------------------------------------------
    注3:Linux下可能有读写权限,建议先放开权限

      chmod 777 文件名

      chmod -R 777 文件夹 (递归该文件夹下所有文件)

    ---------------------------------------------

    3、其他一些语言特性、功能的使用

    1)少用错误控制运算符"@"

    PHP 支持一个错误控制运算符:@。当将其放置在一个 PHP 表达式之前,该表达式可能产生的任何错误信息都被忽略掉。

     

    如果一个缺陷发生在这个表达式中,从PHP的输出中看不到任何错误,这增加了调试的难度。所以能不用则不用。

     

    注: @ 运算符只对表达式有效。对新手来说一个简单的规则就是:如果能从某处得到值,就能在它前面加上 @ 运算符。

    例子:

    1. $a = 123;
    2. echo @$b; //不报错

     

    2有些函数自带有debug功能

    例如:

    1. $fp = fsockopen("www.example.com", 80, $errno, $errstr, 30);

    一般这样的函数(主要是网络通信类的),会自己提供调试参数:$errno$errstr

    你可以加一句:

    1. if (!$fp) echo "$errstr ($errno)<br /> ";

    就能看到连接失败的原因了。

    这些函数有:fsockopenpfsockopenstream_socket_serverstream_socket_client 等。

    还有些函数是调试一个功能用的,比如:mysql_errnosocket_last_errorsocket_strerror 等。

     

    二、引进调试工具

    如:Xdebug

  • 相关阅读:
    android第四天晚:绘图和handle
    第二天学英语:django 第二章 get started(1)
    C#进程间的同步,实现只能运行一个程序的效果
    C# Winform Chart的配置
    C#平台调用的步骤
    分享一个开源小工具,关于单词的
    C#的log4net、log2console、rollingfile综合配置
    C#,字符串加密
    使用C#尽可能以最少的代码完成多层次的软件配置(基于PropertyGrid控件)
    C# Winform 单例的Form窗体
  • 原文地址:https://www.cnblogs.com/xjnotxj/p/5452485.html
Copyright © 2011-2022 走看看