为什么我的PHP日志文件可能不完全是文本?

时间:2010-05-12 21:08:57

标签: php wordpress encoding

我正在尝试调试插件臃肿的Wordpress安装;所以我添加了一个非常简单的自制记录器来记录所有回调,这些回调基本上都列在Wordpress中的一个最终250多行多维数组中(我不能使用print_r(),因为我需要正确地捕获它们在他们被召唤之前)。

我的记录器行是$logger->log("\t" . $callback . "\n");

记录器在正常情况下会生成花花公子文本文件,但在此特定任务期间的两个点处,它会添加一些导致我的日志文件不再被正确编码的内容。 Gedit(我在Ubuntu上)不会打开文件,声称不理解编码。在vim中,罪魁祸首腐败回调(我在调试器中找不到,看着数组)大约在中间并打印为^@lambda_546,在文件末尾有这个可爱的家伙^M 。我的vim中的^M^@是蓝色的,没有为.txt文件设置颜色主题。我不知道这意味着什么。

我尝试添加is_string($callback)条件,但结果相同。

有什么想法吗?

3 个答案:

答案 0 :(得分:1)

^@是NUL字符(\0),^M是CR(\r)。不知道为什么他们会被生成。你必须通过源和数据库来查找。 geany应该能够轻松地打开文件。

答案 1 :(得分:0)

似乎这些可爱的家伙是你的回调格式化Windows的结果。

答案 2 :(得分:0)

神秘之处。其中一个回调是匿名函数。调查PHP create_function文档,我看到一位评论者注意到创建的函数有一个如下名称:chr(0) . lambda_n。谢谢PHP。

至于\r。嗯,这更令人尴尬。我的记录器重复使用了我之前编写的一些旧代码,这些代码在\r\n中执行了结束行。