我們最近在整理伺服器,將原本在 Linux 上面的網站全部移植到 Windows 平台,由於這些網站都是 PHP + MySQL 的組合,所以我也在 IIS 上安裝了 FastCGI 模組,網站的安裝與設定大部分都正常。但就遇到其中一個網站怎麼樣都無法執行 PHP 程式 ( 靜態網頁與圖片都可以正常顯示 ),我們將此問題研究了兩天都還查不出問題,但在今天我終於利用 Process Monitor 將問題找出了。
如下圖示,看到真的當場傻眼 @_@''
原來目錄名稱之前包含了一個無效字元! ( 事實上是一個不可視的 Unicode 字元 )
發生的原因
- 我們的目錄名稱是另一位同事用 Excel 整理過的,而我們的工程師在建立目錄時,為了避免打錯,所以都用「複製/貼上」的方式透過檔案總管建立目錄,誰知道其中一個目錄名稱包含奇怪的字元,神奇的是竟然檔案總管還可以建立成功,而且從外觀還看不出來。
解決的方法
你可能會想,最簡單的解決方方法就是「更改目錄名稱」對吧?那你就錯了!
當我改完目錄名稱後,盡然目錄變成了兩個「完全同名」的目錄 ( 因為目錄前的空白檔案總管不會顯示 ),也就是說那個無效的目錄「刪不掉」啊!
以下是在 命令提示字元 模式下用 dir /x 指令時顯示的畫面:
而且我從命令提示字元模式也無法進入刪除該目錄、也無法「進入」該目錄,這時我就想起我去年寫的一篇 [ 無法刪除不合法檔名的檔案 ] 文章,利用 8.3 短檔名 進行刪除動作,我用了最狠毒的刪除法:
這樣就成功刪除了這個詭異的目錄,不過白白損失了數小時的光陰歲月!