Установите расширение imagick в Mac OS Catalina: php_imagick.h: 42: 10: фатальная ошибка: файл 'php.h' не найден

Я выполнил эти шаги, чтобы установить imagemagick и расширение php imagick на моем компьютере с Mac OS Catalina, и я не могу найти способ.

При попытке установить imagick с помощью $ sudo pecl install imagick я всегда получаю следующую ошибку:

php_imagick.h:42:10: fatal error: 'php.h' file not found
#include "php.h"
         ^~~~~~~
1 error generated.
make: *** [imagick_file.lo] Error 1
ERROR: `make' failed

Я использую php.7.3.11.

Судя по всему, Mac OS X Catalina решила переместить заголовки в другую папку и теперь не находит их.

Я читал этот ответ, но похоже, что решение слишком длинное, чтобы быть правдой. Нет ли другого более простого и понятного метода?

Кажется, другим удается исправить это для других расширения с гораздо меньшими проблемами. Однако я не совсем уверен, что шаги для Imagick точно такие же ...


person Alvaro    schedule 27.03.2020    source источник
comment
У меня не было проблем с установкой imagick на macOS 10.15.4, используя эти инструкции и sudo pecl install imagick. install ok: channel://pecl.php.net/imagick-3.4.4; и я смогу это увидеть, если запустил php -m | grep -i magic. Эта проблема связана только с PHP 7.3? Я просто brew install php и получил PHP 7.4.4.   -  person Christos Lytras    schedule 09.04.2020


Ответы (2)


У меня была такая же проблема с моими новыми MacBook Air и Catalina. Это произошло потому, что у меня не был установлен PHP с brew. Я просмотрел страницу, на которую вы указали ссылку, и предполагаю, что вы уже выполнили brew install pkg-config imagemagick. Вот что я бы сделал, чтобы очистить его и заставить работать, см. Ниже.

Удалите существующие imagemagick и pkg-config, которые были только что установлены (и PHP, если он отображается в списке версий).

Во-первых, при необходимости мы получаем имя php @ver. Если вы не видите PHP в списке, нам не нужно его удалять, просто удалите два других.


    brew list --versions
    ...
    imagemagick 7.0.10-0
    ...
    pcre 8.44
    [email protected] 7.3.16
    pkg-config 0.29.2_2
    ...

Остановите службу php, если она запущена, в моем случае это @ 7.3.

пивоваренные службы остановить [email protected]

Затем мы удаляем предметы, у которых есть проблемы

brew remove [email protected] pkg-config imagemagick

или просто

brew remove pkg-config imagemagick если PHP не установлен вместе с brew

Перезагрузите компьютер (необязательно, но я люблю это делать)

Теперь мы снова устанавливаем элементы, на этот раз включаем PHP, если он не был установлен с brew в прошлый раз.

brew install [email protected] pkg-config imagemagick

Добавьте PHP в свой путь для строки cmd, если еще нет (необязательно)

echo 'export PATH="/usr/local/opt/[email protected]/bin:$PATH"' >> ~/.bash_profile

echo 'export PATH="/usr/local/opt/[email protected]/sbin:$PATH"' >> ~/.bash_profile

Чтобы запустить запуск [email protected] сейчас и перезапустить при входе в систему:

brew services start [email protected]

Или, если вам не нужна / не нужна фоновая служба, вы можете просто запустить:

php-fpm

Подтвердите, что PHP и imagemagick и perl / pecl являются ожидаемыми версиями.

php -v

PHP 7.3.16 (cli) (built: Mar 19 2020 11:19:09) ( NTS )
Copyright (c) 1997-2018 The PHP Group
Zend Engine v3.3.16, Copyright (c) 1998-2018 Zend Technologies
    with Zend OPcache v7.3.16, Copyright (c) 1999-2018, by Zend Technologies

convert --version

Version: ImageMagick 7.0.10-0 Q16 x86_64 2020-04-04 https://imagemagick.org
Copyright: © 1999-2020 ImageMagick Studio LLC
License: https://imagemagick.org/script/license.php
Features: Cipher DPC HDRI Modules OpenMP(3.1) 
Delegates (built-in): bzlib freetype gslib heic jng jp2 jpeg lcms ltdl lzma openexr png ps tiff webp xml zlib

pecl version

PEAR Version: 1.10.10
PHP Version: 7.3.16
Zend Engine Version: 3.3.16
Running on: Darwin mbookair.local 19.4.0 Darwin Kernel Version 19.4.0: Wed Mar  4 22:28:40 PST 2020; root:xnu-6153.101.6~15/RELEASE_X86_64 x86_64

Теперь установите iMagick с помощью pecl

pecl install imagick

нажмите ENTER, когда увидите вопрос о пути для "автоопределения"

По завершении вы можете подтвердить, что модуль загружен php -m | grep imagick

если он загружен, он вернет одну строку со словом imagick

Проверьте правильность установки программы "Imagick" из командной строки cd в домашний каталог пользователя cd ~

Запуск PHP как интерактивной оболочки из командной строки

php -a

Код для тестирования в строке cmd:

$im = new Imagick ();
$im->newImage (300, 225, "blue");
$im->writeImage ("test_imagick.jpg");

Выйдите из интерактивного режима php, набрав exit, затем проверьте, был ли создан ярко-синий test_imagick.jpg в вашем пользовательском каталоге

Примечания по поиску и устранению неисправностей

Если вы получаете предупреждение о:

"PHP Warning:  Module 'imagick' already loaded in Unknown on line 0

Warning: Module 'imagick' already loaded in Unknown on line 0"

Это может остаться от предыдущей установки pecl, которая не была завершена. Проверьте свой файл php.ini и удалите повторяющуюся extension="imagick.so" запись.

person mstephenson    schedule 09.04.2020
comment
Не могу поверить, что это так сложно установить ... разве нет другого более человечного способа? Мне кажется, что с PHP что-то не так, если нам приходится делать все это для установки простого расширения. - person Alvaro; 10.04.2020
comment
Мой ответ был длиннее, потому что я пытался дать инструкции о том, как раскрутить все, что вы могли сделать, а затем выполнить несколько свежую установку с возможностью тестирования из PHP в строке cmd, чтобы убедиться, что imagick установлен и работает. Краткий ответ: 1) brew install [email protected], 2) brew reinstall pkg-config imagemagick, 3) pecl install imagick. Это работает? - person mstephenson; 11.04.2020
comment
такая же ошибка будет отображаться при выдаче pecl install imagick - person Raptor; 09.09.2020
comment
Отличный ответ, спасибо! Работал у меня. Я наконец укусил пулю и перевел Mac OS на homebrew для php, теперь намного проще! - person Luc; 16.09.2020
comment
для меня просто добавление двух строк bash_profile, работающих с исходным .bask_profile - person TeT Psy; 14.01.2021

В домашнем пиве есть ошибка, вот ссылка https://github.com/Homebrew/homebrew-core/issues/41081

Когда вам надоест домашнее варево, переключитесь на Ubuntu, установите пакет imagick no fuss.

person Joseph Olstad    schedule 27.10.2020