Extension PHP intl na Windows nefunguje
- m.brecher
- Generous Backer | 871
Nainstaloval jsem na Windows 10 Apache 2.4.39 (Win64) a PHP 8.0.3. Rozšíření intl nefunguje a nechodí funkce Nette které ho využívají např. ::webalize() apod… V error logu Apache jsem našel chybovou zprávu:
PHP Warning: PHP Startup: Unable to load dynamic library 'intl'
(tried: C:\\Program Files\\PHP8\\ext\\intl (Uveden\xc3\xbd modul nebyl nalezen)
, C:\\Program Files\\PHP8\\ext\\php_intl.dll (Uveden\xc3\xbd modul nebyl nalezen))
in Unknown on line 0
V php.ini mám korektně nastaveno:
extension_dir = "C:\Program Files\PHP8\ext"
extension=intl
Potřebné dll soubory které intl používá jsou v použité distribuci php na správných místech:
- php_intl.dll ve složce /ext
- čtyři soubory icu*.dll v kořenovém adresáři php
PHP jsem nainstaloval jako modul Apache (v konfiguraci Apache) a cesta k PHP není uvedena v systémových proměnných Windows – ukázka z httpd.conf:
LoadModule php_module "C:\Program Files\PHP8\php8apache2_4.dll"
PHPIniDir "C:\Program Files\PHP8"
Jiné extension php fungují.
Hodiny jsem prosurfoval na internetu a jediná použitelná rada byla – zkopírovat všechny icu*.dll (jsou v kořenovém adresáři php) do složky /bin Apache. To jsem zkusil a po restartu Apache intl funguje.
Přestože mě po překopírování souborů intl funguje, přijde mě použitý postup kopírovat dll z PHP do Apache „nekorektní“ a rád bych znal skutečnou příčinu potíží a jak to korektně vyřešit. Měl také někdo problém s instalací extenze intl pro PHP 8.0 na Windows?
Já to odhaduji tak, že dll soubory pro intl jsou v pořádku a funkční, Apache soubor ext\php_intl.dll v pořádku najde, ale nějak nefunguje komunikace mezi tímto dll-kem a dalšími icu*.dlll soubory.
Editoval m.brecher (20. 9. 2021 22:09)
- Michal Kumžák
- Člen | 106
Zkusil bych dát to rozšíření až jako poslední, možná je na nějakém závislé.
Soubory icu*.dll musí být v bin adresáři apache, stejně jako některé další. Neptej se mě proč, ale prostě to tak je. WAMP samotný si je tam totiž z dané verze PHP sám linkuje.
Jinak pokud si tam měl předtím jinou verzi PHP, doporučuji se podívat zda všechny moduly z PHP v adresáři apache/bin jsou z té aktuální verze. Já když měnil verzi PHP ze 7 na 8, tak mi tam zůstaly soubory ze 7 a já se divil, proč mi to nejde.
- Petr Parolek
- Člen | 455
Ahoj, není lepší používat Linuxové prostředí jako Vagrant, Docker přes Windows Subsystem for Linux nebo vyvíjet přímo na Linux desktopu a na něm buď si nainstalovat LAMP nebo přes Docker?
- m.brecher
- Generous Backer | 871
Petr Parolek napsal(a):
Ahoj, není lepší používat Linuxové prostředí jako Vagrant, Docker přes Windows Subsystem for Linux nebo vyvíjet přímo na Linux desktopu a na něm buď si nainstalovat LAMP nebo přes Docker?
Na Windows jsem zvyklý již od roku 1987, je to už určitá psychická závislost a úplně mě stačí přechod z php4 špaget na objektové Nette, ale budu o Linux prostředí pro vývoj uvažovat do budoucna