经常看到apache的出错提示类似\xdd\xdb\x...这样格式的提示,但是一直搞不明白是什么格式的编码,所以,就完全看不出说什么错误.极度郁闷.
终于今天花点时间研究一下这个东西.
一开始猜测应该是某种编码,然后一看,有点16进制来的,但是想了一下,好像html什么的都没见过如此的表达形式.
查找google上竟然发现没人提过这个问题,国人也没有,也不懂怎么在搜索中表达这个问题.郁闷.
查找google上竟然发现没人提过这个问题,国人也没有,也不懂怎么在搜索中表达这个问题.郁闷.
尝试使用一个 顺字测试发现一个中文会给转成如\xdd\xee这样形式,于是确定它是二个表达一个多字节字.
查了一下顺的编码,发现它是跟gbk内码对应上了.
奇怪找了好大一会,只有字转成gbk 码,竟然没有g bk码转汉字在线功能.找了一下,发现php在g bk输入情况urlencode直接转成g bk内码;
到此即可解决本问题了.
如在httpd.conf中输入以下内容
loadModule 顺 _顺_.dll
出错如下
D:\Program Files\apache\bin>httpd -t
httpd: Syntax error on line 492 of D:/Program Files/apache/conf/httpd.conf: Cannot load D:/Program Files/apache/_\xcb\xb3_.dll into server: \xd5\xd2\xb2\xbb\xb5\xbd\xd6\xb8\xb6\xa8\xb5\xc4\xc4\xa3\xbf\xe9\xa1\xa3
ok下面是内码转成可读性字符方法
测试出错信息
D:\Program Files\apache\bin>httpd -t
httpd: Syntax error on line 494 of D:/Program Files/apache/conf/httpd.conf: Cannot load D:/Program Files/apache/php/php5apache2_2d_\xcb\xb3_.dll into server: \xd5\xd2\xb2\xbb\xb5\xbd\xd6\xb8\xb6\xa8\xb5\xc4\xc4\xa3\xbf\xe9\xa1\xa3
把出错转人可识别内容
D:\Program Files\apache\bin>..\php\php -r "$s = str_replace('\x', '%','httpd: Syntax error on line 494 of D:/Program Files/apache/conf/httpd.conf: Cannot load D:/Program Files/apache/php/php5apache2_2d_\xcb\xb3_.dll into server: \xd5\xd2\xb2\xbb\xb5\xbd\xd6\xb8\xb6\xa8\xb5\xc4\xc4\xa3\xbf\xe9\xa1\xa3');var_dump( $s, urldecode($s));" >c:/xxx.txt
注意必须使用红字部分,否则可能会看到不到中文,这样也能到那个文件中去看下面内容
string(210) "httpd: Syntax error on line 494 of D:/Program Files/apache/conf/httpd.conf: Cannot load D:/Program Files/apache/php/php5apache2_2d_%cb%b3_.dll into server: %d5%d2%b2%bb%b5%bd%d6%b8%b6%a8%b5%c4%c4%a3%bf%e9%a1%a3"
string(170) "httpd: Syntax error on line 494 of D:/Program Files/apache/conf/httpd.conf: Cannot load D:/Program Files/apache/php/php5apache2_2d_顺_.dll into server: 找不到指定的模块。"
----------------bat测试工具,都是放在同一个目录下----
decode.php 用于解码的php
-----------代码-------------
$f='e.txt';
file_put_contents($f,urldecode(str_replace("\\x", '%', file_get_contents($f))));
httpdTest.bat 用于测试apache是否正常
----------代码,注意改成自己的httpd路径---
"D:\Program Files\apache\bin\httpd.exe" -t 2>e.txt
runDecode.bat 还原httpd出错提示的
---------代码----------
"D:\Program Files\apache\php\php" -f decode.php
最后打开e.txt即可看到解码后的出错提示内容
如
httpd.exe: Syntax error on line 69 of D:/Program Files/apache/conf/httpd.conf: Cannot load modules/mod_authn_default.so into server: 找不到指定的模块。