經常看到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
-----------代碼-------------
<?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: 找不到指定的子產品。