”工欲善其事,必先利其器。“—孔子《论语.录灵公》
首页 > 编程 > 如何在 macOS 上安装并启用 Imagick for PHP

如何在 macOS 上安装并启用 Imagick for PHP

发布于2024-09-13
浏览:508

How to Install and Enable Imagick for PHP  on macOS

如果您在 macOS 上工作并且需要安装 Imagick for PHP 8.3,则可能会遇到默认安装较旧版本 PHP(例如 PHP 8.0)的问题。在这篇文章中,我将引导您完成确保 Imagick 已安装并针对 PHP 8.3 正确配置的步骤。

第 1 步:通过 Homebrew 安装 PHP 8.3

首先,确保 PHP 8.3 已安装并设置为默认版本。

  1. 安装 PHP 8.3:
   brew install [email protected]
  1. 链接 PHP 8.3 使其成为系统上的默认版本:
   brew link --overwrite --force [email protected]
  1. 通过检查版本来验证 PHP 8.3 是否处于活动状态:
   php -v

您应该看到 PHP 8.3.x 作为输出。

步骤 2:安装 pkg-config 和 ImageMagick

在安装Imagick PHP扩展之前,我们需要安装pkg-config和ImageMagick:

  1. 通过 Homebrew 安装 pkg-config 和 ImageMagick:
   brew install pkg-config imagemagick

此步骤可确保您的系统上提供 Imagick 所需的库和配置。

步骤 3:安装适用于 PHP 8.3 的 Imagick

现在 PHP 8.3 已设置为默认版本,我们可以安装 Imagick 扩展了。

  1. 使用 PECL 安装 Imagick for PHP 8.3。由于默认命令可能仍然指向 PHP 8.0,因此我们需要确保使用 PHP 8.3 的正确 php-config:
   /opt/homebrew/opt/[email protected]/bin/pecl install imagick
  1. 如果 PECL 未按预期工作,或者您正在手动安装,请在 Imagick 安装过程中显式指定正确的 php-config:
   /private/tmp/pear/temp/imagick/configure --with-php-config=/opt/homebrew/opt/[email protected]/bin/php-config --with-imagick

步骤 4:在 PHP 8.3 中启用 Imagick

Imagick安装完成后,需要在PHP的配置文件(php.ini)中启用它。

  1. 打开 PHP 8.3 的 php.ini 文件:
   nano /opt/homebrew/etc/php/8.3/php.ini
  1. 添加以下行以启用 Imagick 扩展:
   extension=imagick.so

第 5 步:重新启动 PHP 或 Web 服务器

启用 Imagick 扩展后,重新启动您的 Web 服务器或 PHP 服务以使更改生效:

  • 对于阿帕奇:
  sudo apachectl restart
  • 对于 PHP-FPM:
  sudo brew services restart [email protected]

第 6 步:验证 Imagick 安装

最后,验证Imagick扩展是否已成功安装并启用。您可以使用以下命令进行检查:

php -m | grep imagick

或者,您可以使用 phpinfo() 创建 PHP 脚本来检查 Imagick 扩展是否已加载。

结论

按照以下步骤,您可以在 macOS 上成功安装并启用适用于 PHP 8.3 的 Imagick 扩展。确保使用正确的 php-config 是避免版本冲突并确保 Imagick 与 PHP 8.3 配合使用的关键。

如果您遇到任何问题或对设置有疑问,请随时发表评论!

版本声明 本文转载于:https://dev.to/nasrulhazim/how-to-install-and-enable-imagick-for-php-83-on-macos-2feo?1如有侵犯,请联系[email protected]删除
最新教程 更多>
  • 如何在 C++ 中创建自定义输入流以从非标准源读取数据?
    如何在 C++ 中创建自定义输入流以从非标准源读取数据?
    在 C 中创建自定义输入流 C 中的自定义输入流提供了从非标准源读取数据的强大机制。虽然直接扩展 istream 类似乎是一个可行的选择,但建议探索其他方法以确保高效可靠的实现。从streambuf派生首选方法在 C 中创建自定义流的方法是从 std::streambuf 基类派生自定义的 Stre...
    编程 发布于2024-11-07
  • SharpAPI Laravel 集成指南
    SharpAPI Laravel 集成指南
    Welcome to the SharpAPI Laravel Integration Guide! This repository provides a comprehensive, step-by-step tutorial on how to integrate SharpAPI into y...
    编程 发布于2024-11-07
  • 如何将 Firebase 与 Laravel 集成
    如何将 Firebase 与 Laravel 集成
    Laravel and Firebase are two powerful tools that can significantly enhance the development of modern web applications. Laravel, a popular PHP framewor...
    编程 发布于2024-11-07
  • Expo with Redux Toolkit、文件系统和 Redux Persist:综合指南
    Expo with Redux Toolkit、文件系统和 Redux Persist:综合指南
    Redux Toolkit 是一个流行的库,它通过提供一组实用程序和约定来简化 Redux 开发。它包括一个减速器和动作创建模式,可以简化编写 Redux 逻辑的过程。将 Redux Persist 与 Redux Toolkit 相结合可以显着提高 React Native 应用程序中状态管理的效...
    编程 发布于2024-11-07
  • 如何处理非嵌套 Lambda 闭包中的变量作用域问题?
    如何处理非嵌套 Lambda 闭包中的变量作用域问题?
    Python Lambda 闭包作用域问题将变量封装在闭包中以将其从函数签名中删除是一种常用于高效代码结构的技术。但是,在非嵌套 lambda 的情况下,闭包保留变量的最终值,从而在尝试基于迭代变量访问特定值时导致问题。考虑提供的代码片段:names = ['a', 'b', 'c'] def te...
    编程 发布于2024-11-07
  • 如何使用现代 CSS 将按钮无缝集成到输入字段中?
    如何使用现代 CSS 将按钮无缝集成到输入字段中?
    如何使用现代 CSS 将按钮集成到输入中问题:创建视觉元素其中按钮无缝集成在输入字段中,允许正常的用户交互、保留文本可见性并保持可访问性和屏幕阅读器兼容性。解决方案:Flexbox 和表单边框最佳方法是使用弹性盒布局以及包含元素(表单)上的边框:定位:设置具有水平行布局的弹性盒,允许输入扩展以填充可...
    编程 发布于2024-11-07
  • 内核开发中的 C++:综合指南
    内核开发中的 C++:综合指南
    介绍 由于直接硬件访问和最小的运行时开销,内核开发传统上是 C 的领域。然而,由于其面向对象的特性,C 在内核编程中找到了自己的位置,这可以带来更干净、更易于维护的代码。本指南将逐步介绍如何使用 C 进行内核开发,重点是设置环境、构建项目以及使用 C 功能编写内核代码,同时牢记内核...
    编程 发布于2024-11-07
  • 在 React 项目中实现 CSS 模块
    在 React 项目中实现 CSS 模块
    React 中的 CSS 模块是一种通过自动生成唯一类名来确定 CSS 范围的方法。这可以防止大型应用程序中的类名冲突并允许模块化样式。以下是如何在 React 项目中使用 CSS 模块: 1. 设置 默认情况下,React 支持 CSS 模块。您只需使用扩展名 .module.cs...
    编程 发布于2024-11-07
  • 有哪些资源可用于实现彗星模式?
    有哪些资源可用于实现彗星模式?
    Comet:服务器推送模式服务器推送是一种在服务器和 Web 客户端之间实现双向通信的技术,已经获得了显着的成果最近的兴趣。 Comet 设计模式作为在 JavaScript 应用程序中实现服务器推送的一种有前途的方法而出现。本问题探讨了 Comet 模式的 jQuery 实现和通用资源的可用性。j...
    编程 发布于2024-11-07
  • 探索心理健康门诊项目的类型
    探索心理健康门诊项目的类型
    门诊心理健康治疗方法是一种不强调在医疗机构过夜的方案。这种疗法主要在医生办公室、医院或诊所提供,在那里人们可以进行定期治疗,以进行高度结构化的定期治疗。 在 COVID-19 大流行期间,全球约有 2.75 亿吸毒者。比前几十年高出近 22%。吸毒成瘾的增加导致全美吸毒过量人数创历史新高。好消息是门...
    编程 发布于2024-11-07
  • 如何在 C++ Builder 中初始化 OpenGL 帧:分步指南
    如何在 C++ Builder 中初始化 OpenGL 帧:分步指南
    如何在 C Builder 中初始化 OpenGL 帧在 C Builder 中的窗体内初始化 OpenGL 帧可能是一项具有挑战性的任务。在尝试调整现有 OpenGL 代码(例如问题中提供的示例)时,您可能会遇到困难。要正确创建和渲染 OpenGL 帧,请按照下列步骤操作:使用 TForm::Ha...
    编程 发布于2024-11-07
  • 利用这些罕见的 HTML 属性增强您的 Web 开发技能
    利用这些罕见的 HTML 属性增强您的 Web 开发技能
    Introduction HTML attributes are most often referred to as the overlooked heroes of web development, playing a crucial role in shaping the st...
    编程 发布于2024-11-07
  • 如何在 Python 中将字符串转换为二进制:ASCII 与 Unicode?
    如何在 Python 中将字符串转换为二进制:ASCII 与 Unicode?
    在Python中将字符串转换为二进制在Python中,您可能会遇到需要将字符串表示为二进制数字序列的情况。这对于多种原因都很有用,例如数据加密或二进制文件操作。使用 bin() 函数将字符串转换为二进制的最简单方法就是使用bin()函数。该函数接受一个字符串作为输入,并将其二进制表示形式返回为字符串...
    编程 发布于2024-11-07
  • 为什么从 Java 中的匿名内部类访问外部实例变量需要是 Final?
    为什么从 Java 中的匿名内部类访问外部实例变量需要是 Final?
    Java内部类:为什么必须使用“最终”外部实例变量在Java中定义匿名内部类时,您可能会遇到将外部实例变量标记为“final”的要求。本文探讨了这个约束背后的原因。正如提供的代码中提到的,实例变量 jtfContent 必须声明为 Final 才能在内部类中访问。这一要求源于 Java 处理匿名内部...
    编程 发布于2024-11-07
  • 理解 Python 中的关键字参数
    理解 Python 中的关键字参数
    When you're programming in Python, knowing how to pass arguments to functions is key for writing clear, flexible, and easy-to-maintain code. One powe...
    编程 发布于2024-11-07

免责声明: 提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发到邮箱:[email protected] 我们会第一时间内为您处理。

Copyright© 2022 湘ICP备2022001581号-3