如何解决PHP 8 - 附魔不工作 - 代理返回一个空数组
我在 Xampp (Windows) 上使用 PHP 8
已将 extension=PHP_enchant.dll
添加到 PHP.ini
- PHP 目录添加到 windows PATH
- 已将
libenchant_hunspell.dll / libenchant_ispell.dll / libenchant_myspell.dll
复制到[PHP]/lib/enchant
- 将
*.dic
和*.aff
移至[PHP]/share/myspell/dicts
但仍然无法获得附魔来检测经纪人
示例代码
<?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 ( )
解决方法
我遇到了同样的问题。我在 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 来源的评论中,您似乎可以通过环境变量 ENCHANT_CONFIG_DIR 控制拼写检查词典的位置,但我相信提供者位置现在是硬编码的。这是 lib_enchant 2.x 和 PHP 8 的新功能......对我们来说是一个巨大的麻烦,因为我们不想在 Windows 机器上的 c:\usr\local 中安装软件。
我可能会编写一个补丁并将其提交给 PHP 以解决此问题,但我担心他们不会接受它,因为该补丁确实会在 lib_enchant 中。 PHP 确实在 github 上托管了自己的 lib_enchant 副本,用于构建这样的依赖项,因此他们可能会集成这些更改。
我希望这能帮助其他人。
,我没有对 jriffel73 答案发表评论的 enauf 声誉,所以我创建了一个新答案。
我也面临在 jriffel73 答案中进行所有操作后字典数组为空的问题。所以我只是稍微改变了字典的路径,它奏效了。
来自:
C:\usr\local\share\enchant\en_US.aff
致:
C:\usr\local\share\enchant\hunspell\en_US.aff
我还授予了这些文件的所有权限
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。