很多时候我觉得需要转储一个变量来进行调试。在 CodeIgniter 中,我很难做到这一点,因为我不能简单地“回显”一个变量而不先将它传递给视图,我认为这很痛苦。我已经阅读了官方文档,虽然我找到了一个使用 log_message 函数的好解决方案,但无法使其工作,即使我成功地使“日志”文件夹可写并按照建议更改了“阈值”。有什么建议么?
问问题
75721 次
4 回答
26
这不是一个好习惯,但您可以在执行的任何时候(从核心类、库、模型和控制器)向浏览器输出任何内容,只需print_r()
在您想要输出信息的位置使用即可。
当然,这有时不会显示,因为可能有重定向/路由/等将用户带到控制器执行的下一步,但如果你想抑制它(再次,仅用于调试目的),你可以使用:
print_r($string_or_variable_to_debug);
die();
该die()
命令将停止所有执行,只留下您想要输出的信息。
使用log_message()
是更好的做法,但是如果您说您已遵循以下步骤,则很难理解为什么您没有成功:
- 确保您的日志文件夹设置为可写
- 设置
$config['log_threshold']
为 2、3 或 4 - 像这样使用函数:
log_message('debug','Message you want to log');
如果您想print_r()
很好地格式化日志消息中的数组或对象,则需要设置 to 的第二个参数print_r()
,TRUE
如下所示:
log_message('debug',print_r($array_or_object,TRUE));
于 2012-11-26T13:25:20.710 回答
15
您需要在文件 config.php 中设置 $config['log_threshold'] 因为默认情况下它是 0(无日志)
- 0 = 禁用记录,错误记录已关闭
- 1 = 错误消息(包括 PHP 错误)
- 2 = 调试消息
- 3 = 信息性消息
- 4 = 所有消息
于 2012-11-26T10:35:16.573 回答
8
我认为您正在寻找的答案是: Codeigniter - Developer's Debug Helper
您可以将此文件添加到application/helper
文件夹。然后自动加载vayes_helper
以application/config/autoload.php
供一般使用。那么你需要做的就是写:
vdebug($variable); // In Controllers, Models, Libraries, Helpers
<?=vdebug($variable)?> // In View files
于 2013-07-16T12:51:42.117 回答
4
log_message('debug',print_r($array_or_object_you_want_to_print,TRUE));
这会将您的数组很好地打印到 log 中。以下是输出示例:
[1] => Array
(
[uid] => 10049082
[phone_id] => 2
[friend_status] => 0
[friend_event_hide_status] =>
)
[2] => Array
(
[uid] => 10042768
[phone_id] => 4
[friend_status] => 3
)
[3] => Array
(
[uid] => 10078255
[phone_id] => 6
[friend_status] => 2
)
[4] => Array
(
[uid] => 10078255
[phone_id] => -1
[friend_status] => 1
[name] => Rajesh
)
[5] => Array
(
[uid] => 10078255
[phone_id] => -1
[friend_status] => 1
[name] => ritesh kumar
)
[6] => Array
(
[uid] => 10078255
[phone_id] => -1
[friend_status] => 1
[name] => Le
)
于 2015-03-06T09:43:51.857 回答