不灭的焱

革命尚未成功,同志仍须努力

作者:php-note.com  发布于:2012-07-02 16:42  分类:PHP基础  编辑

 

/etc/php.ini 中设置一下致命错误的保存路径:

error_log = /alidata/logs/php/php_errors.log

 

 

第一步:

php.ini 中,将 display_errors 设置为 On

第二步:

在 框架的 开始处,添加如下代码:

<?php
if (isset($_GET['debug'])) {
     // ini_set('display_errors', true);
     //【注意】本来不想到 php.ini 中修改 display_errors 值,但是 在 PHP 代码中设置 display_errors 值不起作用,悲剧!
    error_reporting(E_ALL);
    set_time_limit(0);
} else {
    error_reporting(E_ERROR);
}

 

 

以前习惯用 echo,print_r 等方法来测试PHP输出,这样多多少少会影响到代码的正常运行,现改成把测试变量输出到文本的形式,可实现日志形式的调试,代码如下:

/**
 * 写文件
 *
 * @param string $filename 文件名
 * @param string $text     要写入的文本字符串
 * @param string $openmod  文本写入模式('w':覆盖重写,'a':文本追加)
 * @return bool
 */
function file_write($filename = '', $text = '', $openmod = 'w') {
    if (@$fp = fopen($filename, $openmod)) {
        flock($fp, 2);
        fwrite($fp, $text);
        fclose($fp);
        return true;
    } else {
        return false;
    }
}

/**
 * 写对象(包括 数字、字符串、数组)
 * 【注意:临时调试用而已!】
 *
 * @param string $text        要写入的文本字符串
 * @param string $type        文本写入类型('w':覆盖重写,'a':文本追加)
 * @param bool   $isVarExport 是否变量导出
 * @param string $fileName    文件名
 * @return bool
 */
function write2($text = '', $type = 'a', $isVarExport = false, $fileName = 'write2.txt') {
    $filename = SITE_PATH . '/' . $fileName;
    $text = (is_array($text) && $isVarExport) ? var_export($text, true) : print_r($text, true);
    $text = "++++++++++++++++++++++++++++++++++++++++++
"
        . date('Y-m-d H:i:s') . "
"
        . $text . "
";

    return file_write($filename, $text, $type);
}

今后,直接用write2('xxx');函数即可。

 

另外,也可用“file_put_contents”去写文本

$data222 = $arr;

$text222 = print_r($data222, true);
$filename222 = 'd:My Documents1write.txt';
file_put_contents($filename222, $text222);

 

 

延伸阅读:

Zend Studio 9.x + xampp + Xdebug 调试环境安装详解

PHP通过ini_set()来设置显示错误信息和执行时间