簡體   English   中英

在 Mac OS Catalina 中安裝 imagick 擴展:php_imagick.h:42:10:致命錯誤:找不到“php.h”文件

[英]Install imagick extension in Mac OS Catalina : php_imagick.h:42:10: fatal error: 'php.h' file not found

我已經按照這些步驟在我的 Mac OS Catalina 計算機上安裝imagemagick和 php 擴展imagick ,但我似乎找不到方法。

嘗試使用$ sudo pecl install imagick安裝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 的步驟是否完全相同......

我的新 MacBook Air 和 Catalina 也遇到了同樣的問題。 這是因為我沒有安裝 PHP 與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

brew 服務停止 php@7.3

接下來我們刪除有問題的項目

brew remove php@7.3 pkg-config imagemagick

或者干脆

如果 PHP 未隨 brew 一起安裝,則brew remove pkg-config imagemagick

重新啟動您的計算機(可選,但我喜歡這樣做)

現在我們再次安裝項目,如果上次沒有用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 php -m | grep imagick

如果它已加載,它將返回一行帶有imagick一詞

從命令行測試 imagick 是否正確安裝cd 到您的用戶主目錄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"條目

家釀有一個錯誤,這里是鏈接https://github.com/Homebrew/homebrew-core/issues/41081

當你厭倦了 home brew 時,切換到 Ubuntu,安裝 imagick 沒有大驚小怪的包安裝。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM