【20200913】php7.4.6安装笔记(包括redis、memcached、imap、zlib、mongodb扩展)

1. 介绍

1.1 介绍

php7.4.6是一个划时代的产品,它让php对于强类型编程的支持度提升到了前所未有的的高度,不仅仅支持函数参数强类型,还支持函数返回值强类型,甚至对象属性也都支持强类型了

在这样的环境下编写php是非常舒服的,一写复杂的功能也可以通过php来实现了,可靠性比着前面的版本要强太多了

2. 基本信息

2.1 安装环境

CentOS:CentOS Linux release 7.6.1810 (Core)

Linux:Linux version 3.10.0-1062.el7.x86_64

GCC:gcc version 4.8.5 20150623 (Red Hat 4.8.5-36) (GCC)

2.2 软件版本

php-7.4.6.tar.gz

redis-4.1.0.tgz

libmemcached-1.0.18.tar.gz

memcached-3.0.4.tgz

mongodb-1.5.2.tgz

2.3 验证时间

2020/09/13

3. 准备工作

3.1 安装Apache

参考【20200912】Apache2.4安装笔记

3.2 本地化

如果是新环境,我们需要设置时区以保证时间显示正确

timedatectl set-timezone Asia/Shanghai

3.3 安装wget

如果环境里没有wget,通过yum安装一下

yum -y install wget

3.4 安装gcc

如果环境里没有编译工具,通过yum安装一下

yum -y install gcc gcc-c++ make

3.5 安装依赖包

安装 zlib、libxml、curl、freetype、sqlite

yum -y install zlib-devel libxml* curl-devel libjpeg-devel freetype-devel sqlite-devel

安装 oniguruma,这个因为是国外的服务器所以下载比较慢

wget http://mirror.centos.org/centos-7/7.9.2009/cloud/x86_64/openstack-queens/Packages/o/oniguruma-6.7.0-1.el7.x86_64.rpm

wget http://mirror.centos.org/centos-7/7.9.2009/cloud/x86_64/openstack-queens/Packages/o/oniguruma-devel-6.7.0-1.el7.x86_64.rpm

rpm -ivh oniguruma-6.7.0-1.el7.x86_64.rpm

rpm -ivh oniguruma-devel-6.7.0-1.el7.x86_64.rpm

3.6 建立环境根目录

建立软件安装根目录

mkdir -p /tongfu.net/env/

3.7 建立安装包目录并进入

建立软件安装包保存目录

mkdir /packages

cd /packages

4. 安装PHP 7

4.1 准备

php-7.4.6.tar.gz

4.2 下载安装包

下载php-7.4.6安装包

wget https://www.php.net/distributions/php-7.4.6.tar.gz

4.3 百度网盘资源

4.3.1 php-7.4.6.tar.gz

链接: https://pan.baidu.com/s/1jXFk92F5W7vgkAkrl8ViLA 提取码: ii3t

4.3.2 redis-4.1.0.tgz

链接: https://pan.baidu.com/s/1TM5YXhYXX7bQspmjsj5UdA 提取码: q2ek

4.3.3 libmemcached-1.0.18.tar.gz

链接: https://pan.baidu.com/s/1Zp8ap0ImCO91zNpP-VZ6uw 提取码: un3a

4.3.4 libc-client-2007f-16.el7.x86_64.rpm

链接: https://pan.baidu.com/s/1LzolVh8OTArVyEM3-M3IuQ 提取码: 6j4s

4.3.5 uw-imap-2007f-16.el7.x86_64.rpm

链接: https://pan.baidu.com/s/1Bi90W20OX6Wjv5H5WJ7gRA 提取码: w3xr

4.3.6 uw-imap-devel-2007f-16.el7.x86_64

链接: https://pan.baidu.com/s/1dFoNoQSXFI1ykkKq-X9dng 提取码: gdf8

4.3.7 mongodb-1.7.4.tgz

链接: https://pan.baidu.com/s/1gkaZfXhQWOKKCasOui6_YA 提取码: m5wf

4.4 安装php

tar -xzvf php-7.4.6.tar.gz

cd php-7.4.6

./configure --prefix=/tongfu.net/env/php-7.4.6 \

--with-apxs2=/tongfu.net/env/httpd-2.4.46/bin/apxs \

--enable-mbstring \

--enable-exif \

--enable-soap \

--with-jpeg \

--with-curl \

--enable-gd \

--with-freetype \

--enable-fpm \

--enable-mysqlnd \

--with-pdo-mysql \

--with-config-file-path=/tongfu.net/env/php-7.4.6/etc \

--with-mysqli

make && make install

libtool --finish /packages/php-7.4.6/libs

cp php.ini-* /tongfu.net/env/php-7.4.6/etc/

cp php.ini-development /tongfu.net/env/php-7.4.6/etc/php.ini

mkdir /tongfu.net/env/php-7.4.6/logs/

cd ../

5. 测试

5.1 命令行测试

按下面的操作执行后,会得到 phpinfo 打印的信息

[root@tfdev]# /tongfu.net/env/php-7.4.6/bin/php -r "phpinfo();" | grep "PHP API"

PHP API => 20190902

6. 配置Apache

6.1 添加默认索引文件

搜索 DirectoryIndex,在最后添加 index.php

[root@tfdev]# vi /tongfu.net/env/httpd-2.4.46/conf/httpd.conf

DirectoryIndex index.html index.htm index.php

6.2 添加php文件映射

搜索 AddType application/x-gzip .gz .tgz,在后面添加

[root@tfdev]# vi /tongfu.net/env/httpd-2.4.46/conf/httpd.conf

AddType application/x-httpd-php .php

6.3 授权php错误日志目录

我们需要根据 Apache 的配置文件里的 User 和 Group 对 php 的错误日志目录进行授权,否则 error_log 就会不生效

默认的 Apache 的 User 和 Group 都是 daemon,可自行更改

chown daemon.daemon /tongfu.net/env/php-7.4.6/logs/

6.4 重启Apache

重启后apache就支持运行php程序了

systemctl restart httpd

7. 安装redis扩展

7.1 安装redis扩展

wget http://pecl.php.net/get/redis-4.1.0.tgz

tar -xzvf redis-4.1.0.tgz

cd redis-4.1.0

/tongfu.net/env/php-7.4.6/bin/phpize

./configure --with-php-config=/tongfu.net/env/php-7.4.6/bin/php-config

make && make install

cd ../

7.2 配置redis扩展

找到 extension 位置,添加redis

[root@tfdev]# vi /tongfu.net/env/php-7.4.6/etc/php.ini

extension=redis

7.3 重启Apache

systemctl restart httpd

7.4 测试

[root@tfdev]# /tongfu.net/env/php-7.4.6/bin/php -r "phpinfo();" | grep redis

redis

Registered save handlers => files user redis rediscluster memcached 

This program is free software; you can redistribute it and/or modify

8. 安装libmemcached库

8.1 安装libmemcached库

这个下载速度比较慢

wget https://launchpad.net/libmemcached/1.0/1.0.18/+download/libmemcached-1.0.18.tar.gz

tar -xzvf libmemcached-1.0.18.tar.gz

cd libmemcached-1.0.18

./configure --prefix=/tongfu.net/env/libmemcached-1.0.18 \

--with-memcached=/tongfu.net/env/memcached-1.5.10/

make && make install

cd ../

9. 安装memcached扩展

9.1 安装memcached扩展

wget http://pecl.php.net/get/memcached-3.1.5.tgz

tar -xzvf memcached-3.1.5.tgz

cd memcached-3.1.5

/tongfu.net/env/php-7.4.6/bin/phpize

./configure --with-php-config=/tongfu.net/env/php-7.4.6/bin/php-config \

--with-libmemcached-dir=/tongfu.net/env/libmemcached-1.0.18/ \

--disable-memcached-sasl

make && make install

cd ../

9.2 配置mecached扩展

找到 extension 位置,添加memcached

[root@tfdev]# vi /tongfu.net/env/php-7.4.6/etc/php.ini

extension=memcached

9.3 重启Apache

systemctl restart httpd

9.4 测试

[root@tfdev]# /tongfu.net/env/php-7.4.6/bin/php -r "phpinfo();" | grep memcached

memcached

memcached support => enabled

libmemcached version => 1.0.18

memcached.compression_factor => 1.3 => 1.3

memcached.compression_threshold => 2000 => 2000

memcached.compression_type => fastlz => fastlz

memcached.default_binary_protocol => Off => Off

memcached.default_connect_timeout => 0 => 0

memcached.default_consistent_hash => Off => Off

memcached.serializer => php => php

memcached.sess_binary_protocol => On => On

memcached.sess_connect_timeout => 0 => 0

memcached.sess_consistent_hash => On => On

memcached.sess_consistent_hash_type => ketama => ketama

memcached.sess_lock_expire => 0 => 0

memcached.sess_lock_max_wait => not set => not set

memcached.sess_lock_retries => 5 => 5

memcached.sess_lock_wait => not set => not set

memcached.sess_lock_wait_max => 150 => 150

memcached.sess_lock_wait_min => 150 => 150

memcached.sess_locking => On => On

memcached.sess_number_of_replicas => 0 => 0

memcached.sess_persistent => Off => Off

memcached.sess_prefix => memc.sess.key. => memc.sess.key.

memcached.sess_randomize_replica_read => Off => Off

memcached.sess_remove_failed_servers => Off => Off

memcached.sess_sasl_password => no value => no value

memcached.sess_sasl_username => no value => no value

memcached.sess_server_failure_limit => 0 => 0

memcached.store_retry_count => 2 => 2

Registered save handlers => files user redis rediscluster memcached

10. 安装imap扩展

10.1 安装imap扩展

yum -y install libc-client

ln -s /usr/lib64/libc-client.so /usr/lib/libc-client.so

wget http://dl.fedoraproject.org/pub/epel/7/x86_64/Packages/l/libc-client-2007f-16.el7.x86_64.rpm

wget http://dl.fedoraproject.org/pub/epel/7/x86_64/Packages/u/uw-imap-2007f-16.el7.x86_64.rpm

wget http://dl.fedoraproject.org/pub/epel/7/x86_64/Packages/u/uw-imap-devel-2007f-16.el7.x86_64.rpm

rpm -ivh libc-client-2007f-16.el7.x86_64.rpm

rpm -ivh uw-imap-2007f-16.el7.x86_64.rpm

rpm -ivh uw-imap-devel-2007f-16.el7.x86_64.rpm

cd php-7.4.6/ext/imap

/tongfu.net/env/php-7.4.6/bin/phpize

./configure --with-imap \

--with-imap-ssl \

--with-kerberos \

--with-php-config=/tongfu.net/env/php-7.4.6/bin/php-config

make && make install

cd ../../../

10.2 配置imap扩展

找到 extension 位置,添加imap

[root@tfdev]# vi /tongfu.net/env/php-7.4.6/etc/php.ini

extension=imap

10.3 重启Apache

systemctl restart httpd

10.4 测试

[root@tfdev]# /tongfu.net/env/php-7.4.6/bin/php -r "phpinfo();" | grep imap     

Protocols => dict, file, ftp, ftps, gopher, http, https, imap, imaps, ldap, ldaps, pop3, pop3s, rtsp, scp, sftp, smtp, smtps, telnet, tftp

imap

imap.enable_insecure_rsh => Off => Off

11. 安装zlib扩展

11.1 安装zlib扩展

cd php-7.4.6/ext/zlib/

mv config0.m4 config.m4

/tongfu.net/env/php-7.4.6/bin/phpize

./configure --with-php-config=/tongfu.net/env/php-7.4.6/bin/php-config

make && make install

cd ../../../

11.2 配置zlib扩展

找到 extension 位置,添加zlib

[root@tfdev]# vi /tongfu.net/env/php-7.4.6/etc/php.ini

extension=zlib

11.3 重启Apache

systemctl restart httpd

11.4 测试

[root@tfdev]# /tongfu.net/env/php-7.4.6/bin/php -r "phpinfo();" | grep zlib

Registered PHP Streams => php, file, glob, data, http, ftp, compress.zlib, phar

Registered Stream Filters => convert.iconv.*, string.rot13, string.toupper, string.tolower, string.strip_tags, convert.*, consumed, dechunk, zlib.*

libmongoc compression zlib => enabled

zlib

Stream Wrapper => compress.zlib://

Stream Filter => zlib.inflate, zlib.deflate

zlib.output_compression => Off => Off

zlib.output_compression_level => -1 => -1

zlib.output_handler => no value => no value

12. 安装MongoDB扩展

12.1 安装MongoDB扩展

wget http://pecl.php.net/get/mongodb-1.7.4.tgz

tar -xzvf mongodb-1.7.4.tgz

cd mongodb-1.7.4

/tongfu.net/env/php-7.4.6/bin/phpize

./configure --with-php-config=/tongfu.net/env/php-7.4.6/bin/php-config

make && make install

cd ../

12.2 配置MongoDB扩展

找到 extension 位置,添加zlib

[root@tfdev]# vi /tongfu.net/env/php-7.4.6/etc/php.ini

extension=mongodb

12.3 重启Apache

systemctl restart httpd

12.4 测试

[root@tfdev]# /tongfu.net/env/php-7.4.6/bin/php -r "phpinfo();" | grep mongodb

mongodb

mongodb.debug => no value => no value

13. 配置PHP

13.1 基本配置

关闭错误提示,把 On 改为 Off

[root@tfdev]# vi /tongfu.net/env/php-7.4.6/etc/php.ini

display_errors = Off

更改默认错误报警级别,把 E_ALL 改为 E_ALL & ~E_NOTICE & ~E_STRICT & ~E_DEPRECATED

[root@tfdev]# vi /tongfu.net/env/php-7.4.6/etc/php.ini

error_reporting = E_ALL & ~E_NOTICE & ~E_STRICT & ~E_DEPRECATED

设置错误报警输出路径,建议放到独立文件内

[root@tfdev]# vi /tongfu.net/env/php-7.4.6/etc/php.ini

error_log = /tongfu.net/env/php-7.4.6/logs/php_errors.log

设置时区

[root@tfdev]# vi /tongfu.net/env/php-7.4.6/etc/php.ini

date.timezone = Asia/Shanghai

设置主要扩展模块

[root@tfdev]# vi /tongfu.net/env/php-7.4.6/etc/php.ini

extension=redis

extension=memcached

extension=imap

extension=zlib

extension=mongodb

13.2 重启Apache

systemctl restart httpd

14. 测试PHP

14.1 命令行测试

通过php程序执行php代码

[root@tfdev]# /tongfu.net/env/php-7.4.6/bin/php -r "echo \"Now is \". date(\"Y-m-d H:i:s\"). \"\n\";bad_fun_call();"

要点1,时间要正确

Now is 2020-05-28 11:42:47

要点2,日志里要有错误记录

[root@tfdev]# cat /tongfu.net/env/php-7.4.6/logs/php_errors.log 

[28-May-2020 11:44:38 Asia/Shanghai] PHP Fatal error:  Uncaught Error: Call to undefined function bad_fun_call() in Command line code:1

Stack trace:

tfart_0 {main}

  thrown in Command line code on line 1

14.2 浏览器测试

在apache的htdocs目录下建立index.php

[root@tfdev]# echo "<?php phpinfo();" > /tongfu.net/env/httpd-2.4.46/htdocs/index.php

打开浏览器,访问网页 http://192.168.1.168:8080/index.php,可以看到php的服务器信息

【20200913】php7.4.6安装笔记(包括redis、memcached、imap、zlib、mongodb扩展) 第 1 页 - 鬼谷子叔叔的主页 - 同福网 - TONGFU.net

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 206,839评论 6 482
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 88,543评论 2 382
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 153,116评论 0 344
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 55,371评论 1 279
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 64,384评论 5 374
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,111评论 1 285
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,416评论 3 400
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,053评论 0 259
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,558评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,007评论 2 325
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,117评论 1 334
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,756评论 4 324
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,324评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,315评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,539评论 1 262
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,578评论 2 355
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,877评论 2 345

推荐阅读更多精彩内容