RedHat6.9 编译安装php7.4.33(2023-01)
RedHat6.9 编译安装php7.4.33
环境:RedHat6.9
nextcloud21版本以上需要最低php-7.3支持才能往上进行升级
下载php7.4.33安装包linux版,地址:
https://www.php.net/releases/
下载完成后,把php-7.4.33.tar.gz上传至linux目录/root/tmp下(php编译过程由root用户完成,启动用户可在编译命令中指定)
解压安装包:
tar -zxvf php-7.4.33.tar.gz
进入目录
cd php-7.4.33
执行配置
./configure --prefix=/usr/local/php7 --with-config-file-path=/usr/local/php7/etc --with-fpm-group=wyan --with-fpm-user=wyan --with-mcrypt --with-mysql=mysqlnd --with-mysqli=mysqlnd --with-pdo-mysql=mysqlnd --with-gd --with-iconv --with-zlib --enable-xml --enable-bcmath --enable-shmop --enable-sysvsem --enable-inline-optimization --enable-mbregex --enable-fpm --enable-mbstring --enable-ftp --enable-gd-native-ttf --with-openssl --enable-pcntl --enable-sockets --with-xmlrpc --enable-zip --enable-soap --without-pear --with-gettext --enable-session --with-curl --with-jpeg-dir --with-freetype-dir --enable-opcache
**************************************报错1**************************************:
解决方法:升级sqlite3到3.7.4以上(版本库地址https://src.fedoraproject.org/repo/pkgs/sqlite/)
wget https://src.fedoraproject.org/repo/pkgs/sqlite/sqlite-autoconf-3260000.tar.gz/sha512/8c3306b3814a0e9bc69b741f62bdb6efc9f1e07163ca3e3a1581994465de163a7924223522e812d6b3663c1525c7012a6f6d73ad333556eba9f97ce9326fbdb8/sqlite-autoconf-3260000.tar.gz
选择合适的版本进行下载,然后进行默认安装
tar -zxvf sqlite-autoconf-3260000.tar.gz
cd sqlite-autoconf-3260000
./configure
make
make install
再次进行config还是会报错,还需创建链接到/usr/lib64/pkgconfig目录下(注意把原来的sqlite3.pc进行备份)
ln -s /usr/local/lib/pkgconfig/sqlite3.pc /usr/lib64/pkgconfig/sqlite3.pc
**************************************报错2**************************************:
解决方法:编译安装oniguruma组件,版本库地址(https://github.com/kkos/oniguruma)
wget https://github.com/kkos/oniguruma/releases/download/v6.9.8/onig-6.9.8.tar.gz (可能qiang被干扰,多试几次)
tar -zxvf onig-6.9.8.tar.gz
./configure --libdir=/lib64
make
make install
ln -s /lib64/pkgconfig/oniguruma.pc /usr/lib64/pkgconfig/oniguruma.pc
php执行配置成功如下图(出现的警告不用管,因为php升级后把有些原有的组件改成通过扩展的方式进行安装了):
执行编译(接着php安装)
make
编译成功输出如图
执行安装
make install
拷贝配置文件:
cp php.ini-development /usr/local/php7/etc/php.ini
安装完成在/usr/local下会出现php7目录
# cd /usr/local/php7/etc下
首先复制出一份php-fpm.conf
#cp php-fpm.conf.default php-fpm.conf
切换到/usr/local/php7/etc/php-fpm.d复制配置文件
#cp www.conf.default www.conf
按需要修改端口
# vim /usr/local/php7/etc/php-fpm.d/www.conf
找到如下行:
listen = 127.0.0.1:9000
将其端口修改为
listen = 127.0.0.1:9001
配置环境变量
vim /etc/profile 添加到文件末尾 ##php export PHP_HOME=/usr/local/php7 export PATH=$PHP_HOME/bin:$PATH然后 source /etc/profile
php扩展插件安装
首选升级Autoconf版本2.68以上,因为执行/usr/local/php7/bin/phpize命令报错:configure.ac:12: error: Autoconf version 2.68 or higher is required
(版本库地址:ftp://ftp.gnu.org/gnu/autoconf/选择合适的版本下载并安装)
wget ftp://ftp.gnu.org/gnu/autoconf/autoconf-2.70.tar.gz tar -zxvf autoconf-2.70.tar.gz cd autoconf-2.70 ./configure (建议加上--prefix=/usr/直接安装到/usr/bin目录下,不加则安装到/usr/local/bin目录,需要创建链接ln -s /usr/local/bin/autoconf /usr/bin/autoconf)
make && make install
检查版本: /usr/bin/autoconf -V
1、编译安装 PHP 的 Memcached 扩展
- 注意:安装 PHP 的 Memcached 扩展前,务必先安装 Memcached服务
- 下载 libmemcached 源码
cd /root/tmp wget https://launchpad.net/libmemcached/1.0/1.0.18/+download/libmemcached-1.0.18.tar.gz tar zxvf libmemcached-1.0.18.tar.gz # 进入源码目录 cd libmemcached-1.0.18 # 配置指定安装目录 ./configure --prefix=/usr/local/libmemcached --with-memcached # 配置安装 && 编译安装 make && make install
- 如果出现报错
clients/memflush.cc: In function ‘int main(int, char**)’
# 将 clients/memflush.cc 的 42 行和 51 行作如下修改: int main(int argc, char *argv[]) { options_parse(argc, argv); - if (opt_servers == false) + if (!opt_servers) { char *temp; - if (opt_servers == false) + if (!opt_servers) { std::cerr << "No Servers provided" << std::endl; exit(EXIT_FAILURE);
然后安装 Memcached 扩展
- 下载 Memcached 源码包(php >= 7.0 下载 Memcached 3.0,php < 7.0 下载 Memcached 2.2.0)
cd /root/tmp wget http://pecl.php.net/get/memcached-3.1.3.tgz (版本库https://pecl.php.net/package/memcached) tar zxvf memcached-3.1.3.tgz # 进入源码目录 cd memcached-3.1.3 # 通过 phpize 建立 PHP 的外挂模块 /usr/local/php7/bin/phpize # 配置 ./configure --with-php-config=/usr/local/php7/bin/php-config \ --with-libmemcached-dir=/usr/local/libmemcached/ \ --disable-memcached-sasl # 编译安装 make && make install
配置 php.ini
# 编辑 php.ini vim /usr/local/php7/etc/php.ini #在文件尾部增加 [memcached] extension = memcached.so # 重启 nginx 和 php systemctl restart nginx /etc/init.d/php-fpm restart # 或 kill -9 $(pidof php-fpm) /usr/local/php/sbin/php-fpm /usr/local/nginx/sbin/nginx -s reload # 验证 /usr/local/php/bin/php -m | grep memcached
安装php apcu扩展
版本库地址:https://pecl.php.net/package/APCu
wget https://pecl.php.net/get/apcu-5.1.20.tgz tar -zxvf apcu-5.1.20.tgz cd apcu-5.1.20 /usr/local/php7/bin/phpize(生成configure文件) ./configure --with-php-config=/usr/local/php7/bin/php-config make && make install 修改配置文件php.ini末尾添加以下配置行 extension = apcu.so apc.enabled= on apc.shm_size= 64M apc.enable_cli = on 重启php-fpm service php7-fpm restart 验证安装是否成功(查看加载的扩展信息) php -m
PHP7 安装 Opcache 提高性能
进入php7源码解压目录中:cd /root/tmp/php-7.4.33/ext/opcache
(需要添加哪个模块就进哪个模块的目录)
执行/usr/local/php7/bin/phpize产生configure文件
/usr/local/php7/bin/phpize ./configure --with-php-config=/usr/local/php7/bin/php-config --enable-opcache make && make install 最后开启 php.ini 文件的 Opcache 扩展,重启即可 zend_extension=/usr/local/php7/lib/php/extensions/no-debug-non-zts-20190902/opcache.so opcache.force_restart_timeout=3600 opcache.memory_consumption=128 opcache.optimization_level=1 opcache.interned_strings_buffer=8 opcache.max_accelerated_files=10000 opcache.revalidate_freq=1 opcache.fast_shutdown=1 opcache.enable=1 opcache.enable_cli=1 opcache.save_comments=1
PHP7 安装 imagick扩展(debian/centos)
先安装 imagemagick libmagick++-dev
debian/unbuntu系统命令行:
apt-get install imagemagick apt-get install libmagick++-dev
centos/redhat系统命令行:
yum install ImageMagick
yum install ImageMagick-devel
再执行安装(版本库地址:https://pecl.php.net/package/imagick)
wget https://pecl.php.net/get/imagick-3.4.4.tgz tar -zxvf imagick-3.4.4.tgz cd imagick-3.4.4 /usr/local/php7/bin/phpize ./configure --with-php-config=/usr/local/php7/bin/php-config make && make install 修改php.ini添加扩展 extension_dir = /usr/local/php/lib/php/extensions/no-debug-non-zts-20160303/ extension=imagick.so 注意:如果之前配置过extension_dir路径了,则只需要配置extension=imagick.so即可 保存退出,重启php 通过phpinfo可看到,扩展已生效(也可通过php -m进行查看)
PHP7 安装intl扩展(debian/centos)
debian/ubuntu使用命令: apt-get install libicu-dev centos/redhat使用命令: yum install libicu-devel
首先编译升级libicu否则会报错configure: error: Package requirements (icu-uc >= 50.1 icu-io icu-i18n) were not met: (centos6yum安装最高版本为libicu-devel-4.2.1)
版本库地址:(https://github.com/unicode-org/icu/releases/)
https://github.com/unicode-org/icu/releases/download/release-60-2/icu4c-60_2-src.tgz tar -zxvf icu4c-60_2-src.tgz cd icu/source ./configure --prefix=/usr make make install
(icu4c-60_2版本make报错,应该是没有升级gcc-4.8.2,降低版本至56.1版本通过安装) 查看版本信息 icuinfo
提示缺少iso,需要创建软连接
ln -s /usr/lib/libicutu.so.56.1 /usr/lib64/libicutu.so.56
ln -s /usr/lib/libicui18n.so.56.1 /usr/lib64/libicui18n.so.56
ln -s /usr/lib/libicuuc.so.56.1 /usr/lib64/libicuuc.so.56
ln -s /usr/lib/libicudata.so.56.1 /usr/lib64/libicudata.so.56
ln -s /usr/lib/libicuio.so.56.1 /usr/lib64/libicuio.so.56
ln -s /usr/lib/libicule.so.56.1 /usr/lib64/libicule.so.56
ln -s /usr/lib/libiculx.so.56.1 /usr/lib64/libiculx.so.56
(以下链接前注意先备份以前的)
ln -s /usr/lib/libicui18n.so.56.1 /usr/lib64/libicui18n.so
ln -s /usr/lib/libicudata.so.56.1 /usr/lib64/libicudata.so
ln -s /usr/lib/libicuio.so.56.1 /usr/lib64/libicuio.so
ln -s /usr/lib/libicule.so.56.1 /usr/lib64/libicule.so
ln -s /usr/lib/libiculx.so.56.1 /usr/lib64/libiculx.so
ln -s /usr/lib/libicutu.so.56.1 /usr/lib64/libicutu.so
ln -s /usr/lib/libicuuc.so.56.1 /usr/lib64/libicuuc.so
还需要做pc文件的链接
ln -s /usr/lib/pkgconfig/icu-i18n.pc /usr/lib64/pkgconfig/icu-i18n.pc
ln -s /usr/lib/pkgconfig/icu-io.pc /usr/lib64/pkgconfig/icu-io.pc
ln -s /usr/lib/pkgconfig/icu-le.pc /usr/lib64/pkgconfig/icu-le.pc
ln -s /usr/lib/pkgconfig/icu-lx.pc /usr/lib64/pkgconfig/icu-lx.pc
ln -s /usr/lib/pkgconfig/icu-uc.pc /usr/lib64/pkgconfig/icu-uc.pc
然后进行
cd php-7.4.33/ext/intl phpize ./configure --with-php-config=/usr/local/php7/bin/php-config make && make install /usr/local/php7/lib/php/extensions/no-debug-non-zts-20170718/intl.so #将该文件的绝对地址放在自己的php.ini文件里
PHP7 安装gmp扩展(rhel/centos)
进入php7源码路径 cd /root/tmp/php-7.2.16/ext/gmp 执行: /usr/local/php7/bin/phpize 执行配置: ./configure --with-php-config=/usr/local/php7/bin/php-config (可能出现报错:Configure: error: Unable to locate gmp.h) centos: yum install gmp-devel 执行编译安装 make && make install 成功后产生文件: /usr/local/php7/lib/php/extensions/no-debug-non-zts-20170718/gmp.so /usr/local/php7/etc/php.ini文件追加配置项: extension=gmp.so 重启php生效 service php-fpm7 restart20210802追加
PHP7 安装zip扩展
首先升级libzip
查看旧版本 rpm -q libzip rpm -q libzip-devel 执行卸载 yum remove libzip-devel libzip (版本库地址:https://libzip.org/download/) wget https://libzip.org/download/libzip-1.2.0.tar.gz --no-check-certificate tar -zxvf libzip-1.2.0.tar.gz cd libzip-1.2.0 ./configure make make install
创建链接:
ln -s /usr/local/lib/pkgconfig/libzip.pc /usr/lib64/pkgconfig/libzip.pc
再进行安装gmp扩展
cd /root/tmp/php-7.4.33/ext/zip /usr/local/php7/bin/phpize ./configure --with-php-config=/usr/local/php7/bin/php-config make && make install 添加 extension=zip.so
PHP7 安装gd扩展(含freetype/libpng/libjpeg组件进行编译安装)
安装libpng-devel
yum install libpng-devel
安装FreeType(参考文章:http://t.zoukankan.com/carriezhangyan-p-13180390.html)
版本库地址:https://download.savannah.gnu.org/releases/freetype/
wget https://download.savannah.gnu.org/releases/freetype/freetype-2.12.0.tar.gz --no-check-certificate tar -zxvf freetype-2.12.0.tar.gz cd freetype-2.12.0 ./configure make make install
安装libjpeg(版本库地址:http://www.ijg.org/files/)
wget http://www.ijg.org/files/jpegsrc.v9d.tar.gz
tar -zxvf jpegsrc.v9d.tar.gz
cd jpeg-9d
./configure CC="gcc -m64" --prefix=/usr --libdir=/usr/lib64
make
make install
安装libpng(版本库地址:https://sourceforge.net/projects/libpng/files/)
wget https://nchc.dl.sourceforge.net/project/libpng/libpng16/1.6.39/libpng-1.6.39.tar.gz --no-check-certificate tar -zxvf libpng-1.6.39.tar.gz cd libpng-1.6.39 ./configure CC="gcc -m64" --prefix=/usr --libdir=/usr/lib64 (64位系统需要加入路径) make make install
然后安装gd扩展
cd /root/tmp/php-7.4.33/ext/gd /usr/local/php7/bin/phpize ./configure --with-freetype --with-png --with-jpeg --with-libphp-config=/usr/local/php7/bin/php-config make && make install 添加 extension=gd.so
重启php服务
特别注意:如果安装gd模块不加入jpeg组件进行编译会出现:上传的所有jpg图片无法预览且无法打开(页面提示:加载 xxxx.jpg出错 )
说明:php7.4.X之后--with-png选项貌似不能用了(添加了也没关系会提示不识别)参考:https://blog.clarence.tw/2020/07/27/use-docker-php-ext-configure-gd-error-unrecognized-options-with-freetype-dir-with-jpeg-dir/
PHP7 安装sodium扩展
升级libsodium >= 1.0.8 版本库地址:https://github.com/jedisct1/libsodium/releases/ wget https://github.com/jedisct1/libsodium/releases/download/1.0.18-RELEASE/libsodium-1.0.18.tar.gz tar -zxvf libsodium-1.0.18.tar.gz cd libsodium-1.0.18 ./configure(生成MakeFile) (注意:如果您是64位操作系统,则需要使用“ ./configure CC="gcc -m64" --prefix=/usr --libdir=/usr/lib64 ”来进行编译,因为64位操作系统的so文件一般放在/usr/lib64目录中) make make install
cd /root/tmp/php-7.4.33/ext/sodium/usr/local/php7/bin/phpize ./configure --with-php-config=/usr/local/php7/bin/php-config make && make install 添加 extension=sodium.so 重启php服务
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!