RedHat6.9 编译安装php7.4.6

202006为了升级nextcloud13.0.12至14.0.X及更高版本,但是高于13版本的nextcloud已经不再支持php5.6,至少需要php7,故升级php

下载php7.4.6安装包linux版,地址:

https://www.php.net/releases/

下载完成后,把php-7.4.6.tar.gz上传至linux目录/mnt/rd1/tmp

解压安装包:

tar -zxvf php-7.4.6.tar.gz

进入目录

cd php-7.4.6

执行配置

./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

配置成功后控制台输出:

则配置成功

开始执行编译且安装

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

为了兼容php5.6所以需要配置php7的监听端口为9001 (我的php5.6监听端口为9000)

# 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

 

 

出现报错1:

升级sqlite3到3.7.4版本,发现sqlite3.7.4版本是centos8库里面才有,所以暂时不升级这个

换个思路安装版本低一点的php,所以最后选择php7.2.16,直接编译通过;

 

 

 

编译安装 PHP 的 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
  • 解压缩
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

扩展到此安装完成;

 

Memcached 扩展安装完成后,安装Memcached服务,PHP中Memcached 扩展是用来连接Memcached服务的

首先安装libevent(memcached服务端需要用到

下载地址:http://libevent.org/

##下载,解压,配置,编译安装

wget https://github.com/downloads/libevent/libevent/libevent-2.0.20-stable.tar.gz

tar -zxvf
libevent-2.0.20-stable.tar.gz
cd libevent-2.0.20-stable

./configure --prefix=/usr/local/libevent
make; make install

检查是否安装成功

ls -al /usr/local/lib |grep libevent

可能出现如下错误:

make[2]: *** [Makefile:766: bufferevent_openssl.lo] Error 1
make[2]: Leaving directory '/root/tmp/libevent-2.0.20-stable'
make[1]: *** [Makefile:824: all-recursive] Error 1
make[1]: Leaving directory '/root/tmp/libevent-2.0.20-stable'
make: *** [Makefile:569: all] Error 2

原因:在于libevent 2.0.x需要openssl < 1.1.0
常用的几个Linux发行版已经把系统的openssl升级到了1.1.0+
即对应需要libevent 2.1.x+

解决下载高版本的libevent进行安装:https://github.com/libevent/libevent/releases/download/release-2.1.12-stable/libevent-2.1.12-stable.tar.gz

 

然后安装memcached服务

cd /root/tmp
下载:
wget http://www.memcached.org/files/memcached-1.6.6.tar.gz
解压:
tar -zxvf memcached-1.6.6.tar.gz
cd memcached-1.6.6
配置:
./configure --prefix=/usr/local/memcached --enable-64bit --with-libevent=/usr/local/libevent
编译安装:
make && make install

启动:
/usr/local/memcached/bin/memcached -u root -d

查看端口监听
netstat -apn|grep 11211 (默认监听11211端口)

 

附:编译安装 PHP Memcache 扩展

cd /usr/local/src
# 下载
git clone https://github.com/websupport-sk/pecl-memcache memcache
cd memcache
# 编译安装
phpize
./configure --with-php-config=/usr/local/php/bin/php-config
make && make install
# 配置
echo "[memcache]" >> /usr/local/php/etc/php.ini
echo "extension = memcache.so" >> /usr/local/php/etc/php.ini
# 重启
systemctl restart nginx
/etc/init.d/php-fpm restart

 

安装php apcu扩展

下载地址

wget http://pecl.php.net/get/apcu-5.1.16.tgz

解压文件

tar zxvf apcu-5.1.16.tgz
cd apcu-5.1.16

生成configure文件

执行 /usr/local/php7/bin/phpize  其中/usr/local/php7为php安装目录

配置编译参数

./configure --with-php-config=/usr/local/php7/bin/php-config   其中usr/local/php7为php安装目录

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 /mnt/rd1/tmp/php-7.2.16/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-20170718/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

再执行安装

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可看到,扩展已生效

参考:https://blog.whsir.com/post-4736.html

 

PHP7 安装intl扩展(debian/centos)

debian/ubuntu使用命令:
apt-get install libicu-dev

centos/redhat使用命令:
yum install libicu-devel
cd php-7.2.29/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 restart

20210802追加

 

posted @ 2020-06-25 23:23  wangyana  阅读(724)  评论(0编辑  收藏  举报