Edit report at https://bugs.php.net/bug.php?id=64593&edit=1
ID: 64593 Updated by: a...@php.net Reported by: wschalle at gmail dot com Summary: Enchant fails to load any backends. Status: Closed Type: Bug Package: Enchant related Operating System: Windows 7, Windows Server 2008R2 PHP Version: 5.3.23 Assigned To: ab Block user comment: N Private report: N New Comment: libenchant loads all the *.dll it can find in the plugin dir and discards those being not a plugin. That's why one could see some startup warnings in previous versions, as it was <php dir>. Now it loads from a separate path where only the plugins should be. I'd see it more like an improvement. That should be documented though, mood for that? :) Previous Comments: ------------------------------------------------------------------------ [2013-04-09 15:05:29] wschalle at gmail dot com Any idea why this broke between 5.3.22 and 5.3.23? We tend to put dict files in the app, because some instances use different dictionaries. ------------------------------------------------------------------------ [2013-04-09 14:01:47] a...@php.net Great, thanks for checking. With the dicts you could also use the enchant_broker_set_dict_path() or just put the dicts into <php dir>share\myspell\dicts. ------------------------------------------------------------------------ [2013-04-09 13:40:16] wschalle at gmail dot com Putting the DLLs in <php_dir>\lib\enchant works. ------------------------------------------------------------------------ [2013-04-09 13:07:29] a...@php.net Put the plugin dlls should load if you put them into <php dir>\lib\enchant. ------------------------------------------------------------------------ [2013-04-05 19:41:17] wschalle at gmail dot com Description: ------------ This bug was introduced in 5.3.23. It also exists in 5.4.13. Both the CLI and CGI SAPIs are affected. When the enchant broker is initialized, it seems to silently fail to load the backends. Enchant_broker_get_error returns false, and nothing is logged to the php error log or the system event viewer. I tested this with the public win32 VC9 NTS zips of PHP. I verified that 5.3.22 works as expected, with enchant_broker_describe listing both ISPELL and MYSPELL backends. Looking at the diffs from 5.3.22 to 5.3.23, the most likely culprit seems to be either the win32 registry.c change, or maybe the directory changes. Either way, downgrading to 5.3.22 is currently still a viable workaround. Test script: --------------- $broker = enchant_broker_init(); enchant_broker_set_dict_path($broker, ENCHANT_MYSPELL, __DIR__); var_dump(enchant_broker_describe($broker)); var_dump(enchant_broker_get_error($broker)); Expected result: ---------------- array(2) { [0]=> array(3) { ["name"]=> string(6) "ispell" ["desc"]=> string(15) "Ispell Provider" ["file"]=> string(35) "C:\PHP-5.3.x\libenchant_ispell.dll" } [1]=> array(3) { ["name"]=> string(7) "myspell" ["desc"]=> string(16) "Myspell Provider" ["file"]=> string(36) "C:\PHP-5.3.x\libenchant_myspell.dll" } } bool(false) Actual result: -------------- NULL bool(false) ------------------------------------------------------------------------ -- Edit this bug report at https://bugs.php.net/bug.php?id=64593&edit=1