Odeslání formuláře a chyba „PHP extension GD is not loaded“
- MikKuba
- Člen | 83
Ahoj,
Tak nějak tuším chybu, o jakou se jedná, ale nepodařilo se mi vygooglit
přesně stejný problém a jeho řešení.
Stavím na PHP 8.0 a při odeslání formuláře, kam nahraji obrázek a chci
ho potom pomocí Image::fromFile zpracovat vyskočí chyba „PHP extension GD
is not loaded“.
Používám macOS Monterey 12.0.1
Pomocí Homebrew mám nainstalované aktuální PHP, v MAMPu (nepoužívám PRO, ale základní 6.3) vidím aktivní PHP 8.0.0. Ale nikde v php.ini není vlastně zmínka o „extension=php-gd“ nebo cokoliv.
Po vyhledání „gd“ je pouze:
[gd]
; Tell the jpeg decode to ignore warnings and try to create
; a gd image. The warning will then be displayed as notices
; disabled by default
; http://php.net/…nore-warning
;gd.jpeg_ignore_warning = 1
V terminálu mi příkaz brew services php
vrací:
Name Status User File
httpd error 256 root ~/Library/LaunchAgents/homebrew.mxcl.httpd.plist
mysql stopped michalkuba ~/Library/LaunchAgents/homebrew.mxcl.mysql.plist
php started michalkuba ~/Library/LaunchAgents/homebrew.mxcl.php.plist
php@5.6 none
php@7.0 none
php@7.2 none
php@7.4 error 19968 michalkuba ~/Library/LaunchAgents/homebrew.mxcl.php@7.4.plist
php@8.0 error 19968 root ~/Library/LaunchAgents/homebrew.mxcl.php@8.0.plist
Předem děkuji za případné rady nebo rovnou ozkoušené funkční řešení!
Editoval MikKuba (8. 6. 2022 9:04)
- Marek Bartoš
- Nette Blogger | 1274
V kódu se používá php extension, která není načetlá. Takže ji potřebuješ nainstaloval, pokud ji už nemáš a v php.ini aktivovat.
Můžeš vycházet z tohohle návodu https://stitcher.io/…-upgrade-mac#…
- MikKuba
- Člen | 83
Marek Bartoš napsal(a):
V kódu se používá php extension, která není načetlá. Takže ji potřebuješ nainstaloval, pokud ji už nemáš a v php.ini aktivovat.
Můžeš vycházet z tohohle návodu https://stitcher.io/…-upgrade-mac#…
Na PECL jsem taky narazil (byť poprvé), ale rozběhl jsem příkazy, jenže imagick (hádám že klíčový rozšíření) se nedaří instalovat.
checking ImageMagick MagickWand API configuration program... checking Testing /usr/local/bin/MagickWand-config... Doesn't exist
checking Testing /usr/bin/MagickWand-config... Doesn't exist
checking Testing /usr/sbin/bin/MagickWand-config... Doesn't exist
checking Testing /opt/bin/MagickWand-config... Doesn't exist
checking Testing /opt/local/bin/MagickWand-config... Doesn't exist
checking Testing /opt/homebrew/bin/MagickWand-config... Doesn't exist
configure: error: not found. Please provide a path to MagickWand-config or Wand-config program.
ERROR: `/private/tmp/pear/temp/imagick/configure --with-php-config=/opt/homebrew/opt/php@8.0/bin/php-config --with-imagick' failed
Ostatní 2 uvedené v tom příkladu jdou bez problému (redis a xdebug). Většinou se u všech zmínek mluví max o PHP 7.4, o 8.0 hodně málo. Ale verze by snad neměla být problém.
EDIT:
Chybějící MagickWand jsem doinstaloval a pak už
pecl install imagick
proběhlo, ale nyní to nevidím nikde
v MAMPu, takže stále vyskakuje hláška o chybějícím GD
rozšíření :(
Editoval MikKuba (8. 6. 2022 9:41)
- Marek Bartoš
- Nette Blogger | 1274
imagick a GD jsou dvě odlišné knihovny pro práci s obrázky, nijak spolu nesouvisí. Ten návod co jsem posílal je jen obecný postup.
Editoval Marek Bartoš (8. 6. 2022 10:01)
- MikKuba
- Člen | 83
Marek Bartoš napsal(a):
imagick a GD jsou dvě odlišné knihovny pro práci s obrázky, nijak spolu nesouvisí. Ten návod co jsem posílal je jen obecný postup.
Takže se teď trochu zbytečně honím za správnou instalací imagick, protože potom stále budu mít problém s chybějícím GD? Takže místo toho vyhledat balíček s GD který pecl spustí?
Nikde pro PHP 8 nevidím GD extension, přes PECL ho nenaisntaluji, resp. to není jako balíček GD a z těch dostupných nevím, který by mi pomohl. Zkouším sekci Images, ale nevím který z nich by pomohl: https://pecl.php.net/packages.php?…
Editoval MikKuba (8. 6. 2022 10:25)
- MikKuba
- Člen | 83
Marek Bartoš napsal(a):
Zkus
brew install gd
Modul by se pak měl objevit vphp -m
Skrz brew jsem to samozřejmě zkoušel instalovat, i reinstalovat.
Několikrát.
Proběhne a v php -m
to taky vidím.
Ale už to nevidím v
/Applications/MAMP/bin/php/php8.0.0/include/php/ext
. Pro
porovnání v /Applications/MAMP/bin/php/php7.4.12/include/php/ext
vidím pak ještě složku „gd“, ale v php8.0 nikoliv. Celou dobu mám
v MAMPu i na brew zapnutou verzi php 8
V php 7.4 mi GD funguje. I podle phpinfo tam je ten modul, ale v PHP 8 vůbec.
Editoval MikKuba (8. 6. 2022 10:57)
- Marek Bartoš
- Nette Blogger | 1274
Je možné, že ten setup poskytovaný přes brew je chybný (podle téhle
stránky bys gd měl mít). Jak by se dal opravit netuším, ale můžeš
použít setup php shivammathur/homebrew-php
. Tenhle build
používá na Githubu prakticky každý, měl by být spolehlivější https://stitcher.io/…-upgrade-mac
Editoval Marek Bartoš (8. 6. 2022 11:10)
- Pavel Kravčík
- Člen | 1195
U klienta mi nedávno se mi stalo něco podobného, řešením byla
redefinice cesty extension_dir
z relativní na absolutní
v php.ini. Třeba pomůže.
- MikKuba
- Člen | 83
Pavel Kravčík napsal(a):
U klienta mi nedávno se mi stalo něco podobného, řešením byla redefinice cesty
extension_dir
z relativní na absolutní v php.ini. Třeba pomůže.
@PavelKravčík Mám tam toto:
extension_dir = "/Applications/MAMP/bin/php/php8.0.0/lib/php/extensions/no-debug-non-zts-20200930/"
Ale ono v této cestě v extensions to GD vůbec není. Není ani
u staršího PHP 7.4, tedy v cestě
extension_dir = "/Applications/MAMP/bin/php/php7.4.12/lib/php/extensions/no-debug-non-zts-20190902/"
,
ale tam to alespoň běží.
To je asi blbost to předefinovat na extensions pro starší PHP verzi, ne?
Editoval MikKuba (8. 6. 2022 11:26)