今天我遇到一個有趣的問題,我認為在這裡分享可以為下一個遇到相同情況的開發人員省去很多麻煩。我一直在 Windows IIS 伺服器上以 FastCGI 模組執行 PHP5,並且我最近安裝了 Aspell 函式庫,並在我的 php.ini 檔案中啟用了 pspell 擴充功能。我也安裝了英文 Aspell 字典。但是當我去使用 pspell 時,我會收到不明確的錯誤,這些錯誤會在沒有警告的情況下終止腳本執行。
所以我開始分解問題,並得出結論,以下程式碼成功執行了第一行,但在最後一行呼叫 pspell_new_config 時出錯
<?php
$pspell_config = pspell_config_create('en');
$pspell_link = pspell_new_config($pspell_config);
?>
這在瀏覽器中傳回 FastCGI 錯誤,錯誤代碼為 -2147467259 (0x80004005)。幸運的是,我碰巧想到透過命令列嘗試相同的腳本,這給出了更詳細的錯誤。發生的是,字典安裝程式在 Aspell\data 目錄中建立 *.dat 檔案時,使用了 Windows 標準 CRLF "\r\n" 而不是 UNIX 標準 "\n" 作為換行符號。將它們全部改回 UNIX 標準後,一切都正常運作了。它顯然對這些換行符號非常敏感,因此如果您正在絞盡腦汁思考為什麼 pspell_new_config 會中斷您的腳本,並且您正在使用 Windows 伺服器,請首先確保您的字典檔案中沒有任何多餘的 "\r" 字元。