1

PHP 8在 Xampp (Windows) 上使用

已添加extension=php_enchant.dllphp.ini

php_info

  • php 目录添加到 windows PATH
  • 复制libenchant_hunspell.dll / libenchant_ispell.dll / libenchant_myspell.dll[php]/lib/enchant
  • 搬到*.dic&*.aff[php]/share/myspell/dicts

但仍然无法让Enchant检测到 Brokers

示例代码

<?php
$broker = enchant_broker_init();
$tag = 'en_US';

$bprovides = enchant_broker_describe($broker);
echo "Current broker provides the following backend(s):\n";
print_r($bprovides);

输出

Current broker provides the following backend(s): Array ( ) Current broker provides the following dictionaries: Array ( )
4

2 回答 2

2

我遇到了同样的问题。我对 PHP 核心的熟练程度适中,经过几天的调试,我终于让它工作了。不幸的是,在 lib_enchant 和 PHP 8 中似乎都有很多变化。

lib_enchant 2.x 和 PHP 8(在 Windows 上)似乎只支持 hunspell 提供程序(PHP 7.x 和以前的版本同时使用 ispell 和 myspell 提供程序)。此外,现在 enchant 似乎将提供程序 DLL 的路径硬编码为:

C:\usr\local\lib\enchant-2

因此,您必须在 lib/enchant 文件夹的 PHP 发行版中找到 libenchant2_hunspell.dll 以:

C:\usr\local\lib\enchant-2\libenchant2_hunspell.dll

同样,字典文件的位置默认为:

C:\usr\local\share\enchant

因此,就我而言,我最终在该文件夹中找到了以下文件:

C:\usr\local\share\enchant\en_US.aff
C:\usr\local\share\enchant\en_US.dic
C:\usr\local\share\enchant\es_ANY.aff
C:\usr\local\share\enchant\es_ANY.dic

在我对附魔来源的审查中,您似乎可以通过环境变量ENCHANT_CONFIG_DIR控制拼写检查字典的位置,但我相信提供程序位置现在是硬编码的。这是 lib_enchant 2.x 和 PHP 8 的新功能……对我们来说是一个巨大的麻烦,因为我们不想在 Windows 机器上的 c:\usr\local 中安装软件。

我可能会制作一个补丁并将其提交给 PHP 以解决此问题,但我担心他们不会接受它,因为该补丁实际上位于 lib_enchant 中。PHP 确实在 github 上托管了自己的 lib_enchant 副本,用于构建这样的依赖项,因此他们可能会集成这些更改。

我希望这对其他人有帮助。

于 2021-05-06T17:22:51.057 回答
0

我没有任何声誉可以为jriffel73答案发表评论,因此我创建了一个新答案。

在jriffel73答案中的所有操作之后,我也面临字典数组为空的问题。所以我只是稍微改变了字典的路径,它就奏效了。
从:

C:\usr\local\share\enchant\en_US.aff

至:

C:\usr\local\share\enchant\hunspell\en_US.aff

我还授予了这些文件的所有权利

于 2021-07-15T12:10:27.077 回答