Установите расширение imagick в ОС Ma c. Catalina: php_imagick.h: 42: 10: фатальная ошибка: файл php .h не найден. - PullRequest
4 голосов
/ 27 марта 2020

Я выполнил эти шаги , чтобы установить imagemagick и php расширение imagick на мой компьютер с ОС Ma c 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.

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

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

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

1 Ответ

2 голосов
/ 09 апреля 2020

У меня была такая же проблема с моими новыми 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
    php@7.3 7.3.16
    pkg-config 0.29.2_2
    ...

Остановите службу php, если она работает, в моем в случае, если это @ 7,3

остановка обслуживания кофе php@7.3

Далее мы удаляем элементы, имеющие проблему

brew remove php@7.3 pkg-config imagemagick

или просто

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

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

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

brew install php@7.3 pkg-config imagemagick

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

echo 'export PATH="/usr/local/opt/php@7.3/bin:$PATH"' >> ~/.bash_profile

echo 'export PATH="/usr/local/opt/php@7.3/sbin:$PATH"' >> ~/.bash_profile

Чтобы запустить, запустите php@7.3 сейчас и перезапустите при входе :

brew services start php@7.3

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

php-fpm

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

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 для вашего пользователя home dir cd ~

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

php -a

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

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

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

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

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

"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" запись

...