今天我遇到了一个有趣的问题,我想在这里分享一下,以节省下一个遇到同样情况的开发人员的很多麻烦。我一直将 PHP5 作为 FastCGI 模块运行在 Windows IIS 服务器上,最近我安装了 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)。幸运的是,我想尝试通过命令行运行相同的脚本,这给了我一个更具描述性的错误。发生的事情是,字典安装程序使用 Windows 标准 CRLF "\r\n" 而不是 UNIX 标准 "\n" 为换行符创建了 Aspell\data 目录中的 *.dat 文件。通过将这些全部更改回 UNIX 标准,一切正常。它显然对这些换行符非常敏感,因此如果您正在苦苦思索为什么 pspell_new_config 会破坏您的脚本,并且您正在使用 Windows 服务器,请首先确保您的字典文件中没有任何多余的 "\r" 字符。