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服务
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服务

 

posted @ 2023-01-17 17:19  wangyana  阅读(952)  评论(0编辑  收藏  举报