首页 > 解决方案 > 在 Mac OS Catalina 中安装 imagick 扩展:php_imagick.h:42:10:致命错误:找不到“php.h”文件

问题描述

我已经按照这些步骤在我的带有 Mac OS Catalina 的计算机上安装imagemagick和 php 扩展imagick,但我似乎找不到方法。

尝试安装时总是出现以下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 的步骤是否完全相同......

标签: phpimagemagickimagickphp-7.3

解决方案


我的新 MacBook Air 和 Catalina 也遇到了同样的问题。这是因为我没有使用brew. 我查看了您链接到的页面,我假设您已经完成了brew install pkg-config imagemagick. 这就是我要清理它并让它工作的方法,见下文。

删除您现有的imagemagickpkg-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 一起安装

重新启动计算机(可选,但我喜欢这样做)

现在我们再次安装这些项目,如果上次没有使用 brew 安装,则这次包括 PHP

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 是预期的版本

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

现在使用 pecl 安装 iMagick

pecl install imagick

当您看到“自动检测”的路径问题时按 ENTER

完成后,您可以确认模块已加载 php -m | grep imagick

如果已加载,它将返回一行带有单词imagick

从正确安装cd 到您的用户主目录 的命令行 imagick 进行测试cd ~

从 cmd 行将 PHP 作为交互式 shell 运行

php -a

在 cmd 行进行测试的代码:

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

通过输入 exit 退出 php 交互模式,然后检查是否在您的用户目录中创建了亮蓝色 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"条目


推荐阅读