PHP拓展怎么安装_没编译环境能直接装PHP拓展吗【方法】

10次阅读

没有编译环境时,安装php扩展只能通过apt/dnf包管理器或windows直接启用dll;硬要源码编译却缺php-dev/php-devel、gcc、make等工具,将无法运行phpize或./configure。

PHP拓展怎么安装_没编译环境能直接装PHP拓展吗【方法】

没编译环境就别碰 phpize + ./configure 这套流程

直接告诉你结论:没有 GCC、php-dev(或 php-devel)、make 等编译工具,就无法从源码编译安装大多数 PHP 扩展。常见错误是下载了 redis-5.3.7.tgz 就想直接“装上”,结果运行 phpize 报错 command not found,或者 ./configure 提示 Cannot find php-config——这说明底层缺失开发头文件和构建链。

真正能绕过编译的路径只有两条:

  • 用包管理器安装预编译好的二进制扩展(如 ubuntuapt install php-redis
  • pecl install(它会自动调用编译流程,所以依然需要编译环境)→ 本质还是得有 php-dev

Ubuntu/debian 上用 apt 装拓展最省事,但版本常滞后

系统仓库里的 PHP 扩展都是打包时预编译好的 .so 文件,装完改 php.ini 启用就行,完全不碰源码。比如:

sudo apt update sudo apt install php-curl php-mbstring php-xml php-zip php-gd

注意点:

立即学习PHP免费学习笔记(深入)”;

  • 拓展名前缀必须是 php-,且要跟当前 PHP 版本对齐(php8.1-mysqlphp8.2-mysql
  • 装完不会自动写入 php.ini,但多数包会自动在 /etc/php/*/mods-available/ 下建配置,并通过 phpenmod 启用
  • 执行 php -m | grep redis 确认是否加载成功,别只看 apt 是否返回 success

centos/RHEL 用 dnf/yum 装拓展,注意仓库源和模块流

较新版本(CentOS 8+/RHEL 8+)用 dnf module list php 先查可用模块流(stream),再启用对应版本:

sudo dnf module enable php:remi-8.2 sudo dnf install php-pecl-redis php-opcache

关键细节:

  • 默认 baseos/AppStream 仓库里的 PHP 拓展非常少,常用拓展(如 redisswoole)得加第三方源,例如 remiepel
  • php-pecl-xxx 是 PECL 拓展的 RPM 包命名惯例,不是所有 PECL 拓展都有对应 RPM
  • RHEL/CentOS 7 用 yum,但需手动启用 epelremi-php82 等 repo,否则 yum search redis 什么也找不到

Windows 下 PHP 拓展最简单:复制 .dll + 改 php.ini

Windows 官方二进制包自带大量 .dll(位于 ext/ 目录),不用编译,只要两步:

  • 打开 php.ini,去掉对应行的分号,例如 ;extension=php_curl.dllextension=php_curl.dll
  • 确认 extension_dir 指向正确路径,如 extension_dir = "ext"(相对路径)或 extension_dir = "C:phpext"(绝对路径)

容易踩的坑:

  • PHP 线程安全(TS)和非线程安全(NTS)版本必须匹配拓展的 .dll,看 phpinfo()Thread Safety 是 enabled 还是 disabled
  • VC 编译器版本要一致(VC15/VC16/VC17),混用会导致 PHP Warning: Unable to load dynamic library 'xxx'
  • 部分拓展(如 sqlsrv)需额外安装 microsoft ODBC Driver,光放 DLL 不行

没编译环境时,apt/dnf/Windows DLL 是唯三靠谱路径;硬要源码编译却缺 php-configphp.h,基本等于在没地基的情况下砌墙——先装 php-dev 或对应 -devel 包,再谈其他。

text=ZqhQzanResources