php扩展

说明:

通过phpize可执行命令安装。

phpSrcDir是php源码包目录。

installDir是php服务安装目录。

pecl地址https://pecl.php.net/package

composer

shell 复制代码
cd installDir/bin

# 直接安装
curl -sS https://getcomposer.org/installer | ./php

# 多个版本php安装多个版本composer
wget https://install.phpcomposer.com/composer.phar
chmod +x composer.phar
installDir/bin/php installDir/bin/composer.phar --help

# 嫌弃命令太长可以将其写入一个脚本然执行脚本
vim composer.sh
#! /bin/bash
installDir/bin/php installDir/bin/composer.phar $*

phpunit

shell 复制代码
cd installDir/bin
wget https://phar.phpunit.de/phpunit.phar
chmod +x phpunit.phar

# 需要部分括扩展
installDir/bin/php installDir/bin/phpunit.phar --help

# 嫌弃命令太长可以将其写入一个脚本然执行脚本
vim phpunit.sh
#! /bin/bash
installDir/bin/php installDir/bin/phpunit.phar $*

phpDocumentor

shell 复制代码
cd installDir/bin
wget https://phpdoc.org/phpDocumentor.phar
chmod +x phpDocumentor.phar

# 需要部分括扩展
installDir/bin/php installDir/bin/phpDocumentor.phar --help

# 嫌弃命令太长可以将其写入一个脚本然执行脚本
vim phpDocumentor.sh
#! /bin/bash
installDir/bin/php installDir/bin/phpDocumentor.phar $*

openssl

shell 复制代码
cd phpSrcDir/ext/openssl
mv config0.m4 config.m4
installDir/bin/phpize
./configure \
--with-php-config=installDir/bin/php-config \
--with-openssl=opensslInstalllDir \
OPENSSL_CFLAGS='-I/opensslInstalllDir/include' \
OPENSSL_LIBS='-L/opensslInstalllDir/lib64 -lssl -lcrypto'

make
make install

# 修改php.ini文件
[openssl]
extension=openssl.so

curl

shell 复制代码
cd phpSrcDir/ext/curl
installDir/bin/phpize
./configure \
--with-php-config=installDir/bin/php-config \
--with-curl=curlInstallDir

make
make install

# 修改php.ini文件
[curl]
extension=curl.so

opcache

shell 复制代码
cd phpSrcDir/ext/opcache
installDir/bin/phpize
./configure \
--with-php-config=installDir/bin/php-config

make
make install

# 修改php.ini文件
[opcache]
zend_extension=opcache.so
;启用OPcache
opcache.enable=1
;CLI模式下启用OPcache
opcache.enable_cli=1
;共享内存大小(单位M)
opcache.memory_consumption=128
;存储字符串的内存大小(单位M)
opcache.interned_strings_buffer=8
;允许缓存脚本文件最大数量
opcache.max_accelerated_files=4000
;缓存过期的时间(单位秒) 0每次都检查脚本是否更新
opcache.revalidate_freq=60
;启用快速关闭
opcache.fast_shutdown=1
;启用tracing后JIT可以更精细并选择函数中的代码段进行编译
opcache.jit=tracing
opcache.jit_buffer_size=100M

;opcache.revalidate_freq配置项参数较大的话 改变源代码访问时并不一定实时改变(有缓存)
php 复制代码
declare (strict_types=1);
$start = microtime(true);
$total = 0;
for ($i = 0; $i < 1000000; $i++) {
    $total += $i;
}
echo 'Count:' . $i . ',Total' . $total . '<br/>';
$end = microtime(true);
$spend = floor(($end - $start) * 1000);
echo $spend;

# 开启时
# Count:1000000,Total499999500000
# 15(最大)
# 未开启时
# Count:1000000,Total499999500000
# 54(有时更大)

mysqli

shell 复制代码
cd phpSrcDir/ext/mysqli
installDir/bin/phpize
# --with-mysqli=mysqlInstallDir/bin/mysql_config
./configure \
--with-php-config=installDir/bin/php-config

make
make install

# 错误
# error: Please reinstall the mysql distribution
# 修改mysqli_api.c文件
# 将#include "ext/mysqlnd/mysql_float_to_double.h"
# 改为#include "../mysqlnd/mysql_float_to_double.h"

# 修改php.ini文件
[MySQLi]
extension=mysqli.so

pdo_mysql

shell 复制代码
cd phpSrcDir/ext/pdo_mysql
installDir/bin/phpize
# --with-pdo-mysql=mysqlInstallDir/bin/mysql_config
./configure \
--with-php-config=installDir/bin/php-config

make
make install

# 修改php.ini文件
[Pdo_mysql]
extension=pdo_mysql.so

pgsql

shell 复制代码
# 此扩展依赖postgresql
cd phpSrcDir/ext/pgsql
installDir/bin/phpize
./configure \
--with-php-config=installDir/bin/php-config

make
make install

# 修改php.ini文件
[PostgreSQL]
extension=pgsql.so
pgsql.allow_persistent=On
pgsql.auto_reset_persistent=Off
pgsql.max_persistent=-1
pgsql.max_links=-1
pgsql.ignore_notice=0
pgsql.log_notice=0

pdo_pgsql

shell 复制代码
# 此扩展依赖postgresql
cd phpSrcDir/ext/pdo_pgsql
installDir/bin/phpize
./configure \
--with-php-config=installDir/bin/php-config

make
make install

# 修改php.ini文件
;pdo_pgsql
extension=pdo_pgsql.so

calendar-日历扩展

shell 复制代码
# 包含了简化不同日历格式间转换函数
cd phpSrcDir/ext/calendar
installDir/bin/phpize
./configure \
--with-php-config=installDir/bin/php-config \
--enable-calendar

make
make install

# 修改php.ini文件
;calendar
extension=calendar.so

exif-处理图像元数据

shell 复制代码
# 例如使用exif函数通过处理存储在标题信息来读取从数码相机拍摄图片的元数据
# 常见于JPEG和TIFF图像中
cd phpSrcDir/ext/exif
installDir/bin/phpize
./configure \
--with-php-config=installDir/bin/php-config

# make可能会报错使用c99标准
make CFLAGS=-std=c99
make install

# 修改php.ini文件
[exif]
extension=exif.so
exif.encode_unicode=ISO-8859-15
exif.decode_unicode_motorola=UCS-2BE
exif.decode_unicode_intel=UCS-2LE
exif.encode_jis=
exif.decode_jis_motorola=JIS
exif.decode_jis_intel=JIS

xsl

shell 复制代码
# 依赖libxslt
# XSL代表可扩展样式表语言 它是用来理解和样式化XML文档
# 它可以作为基于XML的样式表语言 就像CSS是基于HTML的样式表语言一样
# 它是一种标记语言 可以指定浏览器应该如何呈现XML文档
cd phpSrcDir/ext/xsl
installDir/bin/phpize
./configure \
--with-php-config=installDir/bin/php-config \
--with-xsl=/opt/local

make
make install

# 修改php.ini文件
;xsl
extension=xsl.so

sysvmsg-消息队列

shell 复制代码
cd phpSrcDir/ext/sysvmsg
installDir/bin/phpize
./configure \
--with-php-config=installDir/bin/php-config

make
make install

# 修改php.ini文件
;sysvmsg
extension=sysvmsg.so

sysvshm-共享内存

shell 复制代码
cd phpSrcDir/ext/sysvshm
installDir/bin/phpize
./configure \
--with-php-config=installDir/bin/php-config

make
make install

# 修改php.ini文件
[sysvshm]
extension=sysvshm.so

bcmath-数学扩展

shell 复制代码
cd phpSrcDir/ext/bcmath
installDir/bin/phpize
./configure \
--with-php-config=installDir/bin/php-config

make
make install

# 修改php.ini文件
[bcmath]
extension=bcmath.so

gettext-国际化与字符编码支持

shell 复制代码
cd phpSrcDir/ext/gettext
installDir/bin/phpize
./configure \
--with-php-config=installDir/bin/php-config \
--with-gettext=gettextInstallDir

make
make install

# 修改php.ini文件
;gettext
extension=gettext.so

mbstring-多字节字符串

shell 复制代码
cd phpSrcDir/ext/mbstring
installDir/bin/phpize
./configure \
--with-php-config=installDir/bin/php-config

make
make install

# 修改php.ini文件
[mbstring]
extension=mbstring.so

zlib-读写gzip压缩过的文件

shell 复制代码
cd phpSrcDir/ext/zlib
mv config0.m4 config.m4
installDir/bin/phpize
./configure \
--with-php-config=installDir/bin/php-config \
--with-zlib

make
make install

# 修改php.ini文件
;zlib
extension=zlib.so

gzip-压缩文件

shell 复制代码
# 更改php.ini
zlib.output_compression=On
;gzip压缩级别1~9 建议3~5
zlib.output_compression_level=4
;gzip压缩方式 建议注释
;zlib.output_handler=

#页面头部信息还没有输出 而且php已经加载了zlib扩展 而且浏览器接受GZIP
if(!headers_sent() && extension_loaded('zlib') && strstr($_SERVER['HTTP_ACCEPT_ENCODING'], 'gzip')){
    ini_set('zlib.output_compression', 'On');
    ini_set('zlib.output_compression_level', '4');
}

bzip2-读写.bz2压缩文件

shell 复制代码
# 依赖bzip2库
cd phpSrcDir/ext/bz2
installDir/bin/phpize
./configure \
--with-php-config=installDir/bin/php-config \
--with-bz2

make
make install

# 修改php.ini文件
;bz2
extension=bz2.so

zip-压缩zip

shell 复制代码
# https://pecl.php.net/package/zip
cd zip
installDir/bin/phpize
./configure \
--with-php-config=installDir/bin/php-config

make
make install

# 修改php.ini文件
;zip
extension=zip.so

ftp

shell 复制代码
cd phpSrcDir/ext/ftp
installDir/bin/phpize
./configure \
--with-php-config=installDir/bin/php-config \
--with-openssl-dir=opensslInstallDir \
--enable-ftp

make
make install

# 修改php.ini文件
;ftp
extension=ftp.so

sockets

shell 复制代码
cd phpSrcDir/ext/sockets
installDir/bin/phpize
./configure \
--with-php-config=installDir/bin/php-config \
--enable-sockets

make
make install

# 修改php.ini文件
;sockets
extension=sockets.so

soap

shell 复制代码
# 依赖libxml SOAP协议可以实现不同系统之间的数据交互和通信
cd phpSrcDir/ext/soap
installDir/bin/phpize
./configure \
--with-php-config=installDir/bin/php-config \
--enable-soap

make
make install

# 修改php.ini文件
[soap]
extension=soap.so

gd

shell 复制代码
# 依赖libgd
cd phpSrcDir/ext/dg
installDir/bin/phpize
./configure \
--with-php-config=installDir/bin/php-config \
--with-jpeg=jpegInstallDir \
--with-freetype=freetypeInstallDir \
--with-webp=libwebpInstallDir \
PNG_CFLAGS='-I/libpngInstallDir/include' \
PNG_LIBS='-L/libpngInstallDir/lib'

make
make install

# 修改php.ini文件
[gd]
extension=gd.so

mcrypt-加密扩展

shell 复制代码
# 依赖mhash和libmcrypt
# https://pecl.php.net/package/mcrypt 不维护
cd mcrypt
installDir/bin/phpize
./configure \
--with-php-config=phpInstallDir/bin/php-config \
--with-mcrypt=libmcryptInstallDir

make
make install

# 修改php.ini文件
;mcrypt
extension=mcrypt.so

igbinary-序列化

shell 复制代码
# https://pecl.php.net/package/igbinary
# 相对于自带serialize igbinary具有性能高节省空间的特点
cd igbinary
installDir/bin/phpize
./configure \
--with-php-config=installDir/bin/php-config

make
make install

# 修改php.ini文件
;igbinary
extension=igbinary.so
;使用igbinary作为会话序列化程序
session.serialize_handler=igbinary
;复字符串压缩 默认On
igbinary.compact_strings=On
;使用igbinary作为APCu序列化器
apc.serializer=igbinary

imagick-创建和修改图像

shell 复制代码
# 依赖ImageMagick
# https://pecl.php.net/package/imagick
# imagick是一个原生的php扩展 用于使用ImageMagick API创建和修改图像
# imageMagick是一个用于创建 编辑和合成位图图像的软件套件
# 它可以读取 转换和写入多种格式(超过100种)的图像
# 包括DPX EXR GIF JPEG JPEG-2000 PDF PhotoCD PNG Postscript SVG和TIFF
cd imagick
installDir/bin/phpize
./configure \
--with-php-config=installDir/bin/php-config \
--with-imagick=ImageMagickSrc

make
make install

# 修改php.ini文件
;imagick
extension=imagick.so

redis

shell 复制代码
# https://pecl.php.net/package/redis
cd redis
installDir/bin/phpize
./configure \
--with-php-config=installDir/bin/php-config \
--enable-redis

make
make install

# 修改php.ini文件
;redis
extension=redis.so

memcache

shell 复制代码
# https://pecl.php.net/package/memcache
cd memcache
installDir/bin/phpize
./configure \
--with-php-config=installDir/bin/php-config

make
make install

# 修改php.ini文件
;memcache
extension=memcache.so

mongodb

shell 复制代码
# https://pecl.php.net/package/mongodb
cd mongodb
installDir/bin/phpize
./configure \
--with-php-config=installDir/bin/php-config

make
make install

# 修改php.ini文件
;mongodb
extension=mongodb.so

swoole

shell 复制代码
# 依赖c-ares
#
cd swoole
installDir/bin/phpize
./configure \
./configure \
--with-php-config=installDir/bin/php-config \
--enable-cares \
--enable-sockets \
--enable-mysqlnd \
--enable-swoole-curl \
--enable-swoole-sqlite \
--with-nghttp2-dir=nghttp2InstallDir \
--with-openssl-dir=opensslInstallDir

make
make install

# 修改php.ini文件
;swoole
extension=swoole.so

xdebug

shell 复制代码
# 查看适配php的Xdebug版本
# 将php -i输出内容复制到https://xdebug.org/wizard 查看适配Xdebug的版本
cd xdebug
installDir/bin/phpize
./configure \
--with-php-config=installDir/bin/php-config

make
make install

# 修改php.ini文件
;xdebug
zend_extension=xdebug.so
;是否允许Xdebug跟踪函数调用 跟踪信息以文件形式存储
xdebug.mode=debug,trace
;否允许Xdebug远程调试
xdebug.start_with_request=yes
xdebug.idekey=xdebug
xdebug.client_port=9000
xdebug.client_host=127.0.0.1
;收集返回值
xdebug.collect_return=On
xdebug.output_dir=/tmp/xdebug
xdebug.log=/tmp/xdebug/xdebug.log

;指定xdebug.output_dir和xdebug.log参数 应创建对应目录与文件并赋予相应权限
;xdebug扩展与opcache扩展的opcache.jit_buffer_size参数冲突

扩展(不建议开启)

fileinfo

shell 复制代码
# 获取文件mime类型fileinfo等方法
cd phpSrcDir/ext/fileinfo
installDir/bin/phpize
./configure \
--with-php-config=installDir/bin/php-config

make
make install

;fileinfo
extension=fileinfo.so

readline

shell 复制代码
# readline扩展并非线程安全
cd phpSrcDirext/readline
installDir/bin/phpize
./configure \
--with-php-config=installDir/bin/php-config

make
make install

# 修改php.ini文件
;readline
extension=readline.so

ffi

shell 复制代码
# readline扩展并非线程安全
cd phpSrcDirext/ffi
installDir/bin/phpize
./configure \
--with-php-config=installDir/bin/php-config

make
make install

# 修改php.ini文件
[ffi]
extension=ffi.so
相关推荐
BingoGo19 小时前
当你的 PHP 应用的 API 没有限流时会发生什么?
后端·php
JaguarJack19 小时前
当你的 PHP 应用的 API 没有限流时会发生什么?
后端·php·服务端
BingoGo2 天前
OpenSwoole 26.2.0 发布:支持 PHP 8.5、io_uring 后端及协程调试改进
后端·php
JaguarJack2 天前
OpenSwoole 26.2.0 发布:支持 PHP 8.5、io_uring 后端及协程调试改进
后端·php·服务端
JaguarJack3 天前
推荐 PHP 属性(Attributes) 简洁读取 API 扩展包
后端·php·服务端
BingoGo3 天前
推荐 PHP 属性(Attributes) 简洁读取 API 扩展包
php
JaguarJack4 天前
告别 Laravel 缓慢的 Blade!Livewire Blaze 来了,为你的 Laravel 性能提速
后端·php·laravel
郑州光合科技余经理4 天前
代码展示:PHP搭建海外版外卖系统源码解析
java·开发语言·前端·后端·系统架构·uni-app·php
feifeigo1234 天前
matlab画图工具
开发语言·matlab
dustcell.4 天前
haproxy七层代理
java·开发语言·前端