使用 Phpize 安装 PHP 的常用功能扩展模块 | 学习笔记

本文涉及的产品
Redis 开源版,标准版 2GB
推荐场景:
搭建游戏排行榜
云数据库 Tair(兼容Redis),内存型 2GB
简介: 快速学习使用 Phpize 安装 PHP 的常用功能扩展模块

开发者学堂课程【阿里云上搭建 LAMP 环境实战:使用 Phpize 安装 PHP 的常用功能扩展模块】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/663/detail/11091


使用 Phpize 安装 PHP 的常用功能扩展模块

 

内容介绍:

一、为 php 安装 opensal 模块

二、安装 memcache 扩展模块

三、安装 Redis

 

一、为 php 安装 opensal 模块

打开会话终端,输入 cd

ls

cd /root/lamp/

ls

cd php-7.3.10

image.png

如图显示的是 php 的家目录,接着进入到php的扩展目录,输入

cd ext/

ls

结果如下

image.png

可以看到 php 自带很多扩展

我们在安装时可以通过一个参数指定来安装这些,比如现在要安装 openssl,输入

cd openssl/

ls

就可以进入oenssl的源码包。如果后期想完成再安装,在编译 php 时没有通过参数指定安装它,现在想后期安装,但是这里没有 config,输入

./configure

结果显示 bash: ./configure: No such file or directory

后期想安装需要用到命令 phpize,因为这个命令可以建立 php 的外挂模块,专门建立 php 的扩展模块,例如输入

/usr/local/php/bin/phpize

ls

显示没有 config.m4文件,查看目录下有 config0.m4文件,是这个文件的模板,修改名字:

mv config0.m4 config.m4

/usr/local/php/bin/phpize

ls

可以看到目录下的 config.m4 文件已经生成我们需要编译的 config 文件

image.png

再来输入

yum -y install autoconf

先执行该命令

再输入

/usr/local/php/bin/phpize

ls

clear

ls

ls configure

结果显示 configure

显示出该文件后再进行安装,输入

./configure--with-openssl--with-php-config=/usr/local/php/bin/php-config

make && make install

可以看到现在已经安装好了 php 的扩展目录

image.png

已经编译完成,输入查看在目录下:

cd /usr/local/php/lib/php/extensions/no-debug-zts-20180731/

ls

结果显示 opcache.so openssl.so

已经存在 openssl 模块。完成了编译安装并且指定目录

验证打开 phpinfo,刷新搜索 openssl,发现扩展中没有找到 openssl,没有安装成功。

回到终端,我们需要在 php 配置文件中指定扩展目录

输入vi /usr/local/php/etc/php.ini

打开后搜索输入 ?extension

可以看到有很多扩展都没有打开,在末行添加输入

extension_dir=”/usr/local/php/lib/php/extensions/no-debug-zts-20180731/”

extension=”openssl.so”

然后关闭,修改完 php 配置文件后要重启,输入

/usr/local/apache2/bin/apachectl stop

/usr/local/apache2/bin/apachectl start

再来打开 php.info 刷新,查找 openssl

image.png

如图,此时可以查找到。以上就是 openssl 的扩展模块

再来安装 memcache 扩展模块

 

二、安装 memcache 扩展模块

memcache 的扩展不是在 php 的源码下,需要自己下载源码,输入

cd

ls

cd /lamp/

ls

显示如图

image.png

再来解压该扩展,输入

tar -xf pecl-memcache-4.0.4.tar.gz

cd pecl -memcache-4.0.4

ls

可以看到有config.m4,接着输入

/usr/local/php/bin/phpize

ls

结果出现configure配置文件

再输入

./configure --with-php-config=/usr/local/php/bin/php-config

clear

make && make install

安装完成,可以看到放到了该目录下

image.png

输入

ls /usr/local/php/lib/php/extensions/no-debug-zts-20180731/

结果显示 memcache.so  opcache.so  openssl.so

多出了 memcache.so

再输入

vi /usr/local/php/etc/php.ini

再搜索输入?openssl.so

在刚刚的 extension=”openssl.so”;下继续添加

extension=”memcache.so”;

退出后再重启输入

/usr/local/apache2/bin/apachectl stop

/usr/local/apache2/bin/apachectl start

再打开 php.info 中刷新搜索 memcache

可以看到如图

image.png

以上步骤证明已经可以在 php 中调用 memcache 这些扩展函数去操作 memcache数据库,memcache 数据库可以在远程其他机器中安装,也可以在本地安装。我们先来测试本地安装。

安装 memcache 服务

image.png

Memcache 用到了 libevent 库,libevent 是安装 memcache 的唯一前提条件,是一套跨平台的事件处理接口的封装,memcached 使用 libevent 来进行网络并发连接的处理,能够在很大并发的情况下,仍旧保持快速的响应能力。

输入 cd -

ls

tar -xf memcached-1.5.19.tar.gz

cd memcacheed-1.5.19

ls

clear

yum -y install libevent-devel

clear

./configure --prefix=/usr/local/memcache

make && make install

编译安装完成后和mysql一样是一个独立的数据库软件,有启动用户,输入

useradd -r -s /sbin/nologin memcache

clear

/usr/localmemcache/bin/memcached -umemcache &

netstat -tnl

结果显示端口11211,服务器安装启动成功

之后输入

telnet localhost 80

yum -y install telnet

telnet localhost 80

Exit

想访问任何端口都可以,输入

telnet localhost 11211

成功连接 memcached 服务器后,与 memcached 通信的客户端命令并不多,并且使用方法都非常简单。仅有5个常用的命令(区分大小写),如下所示。

stats:当前所有 memcached 服务器运行的状态信息。

add:添加一个数据到服务器。

set:替换一个已经存在的数据。如果数据不存在,则和add命令相同。

get:从服务器端提职指定的数据。

delete:删除指定的单个数据。如果要清除所有数据,可以使用flush_all指令。如果以上命令执行发生错误,MemCache.协议会对错误部分做出提示。主要有3个错误提示的指令,如下所示。

ERROR:普通的错误信息,如指令错误。

CLIENT_ERROR <错误信息>。客户端错误。

ISERVER_ERROR<错误信息>。服务器端错误。


三、安装 Redis

image.png

输入cd..

ls

tar -xf redis-5.0.6.tar.gz

cd redis -5.0.6

ls

make install PREFIX=/usr/local/redis

安装完成后需要做一个配置文件,输入

cd /usr/local/redis/

ls

mkdir etc

cd /root/lamp/redis-5.0.6

mv redis.conf /usr/local/redis/etc/

然后来修改一下配置文件里的一个属性

vi /usr/local/redis/etc/

搜索输入?daemonize

将 daemonize no 改为 daemonize yes

接下来就可以开启 redis,输入

/usr/local/redis/bin/redis-server/usr/local/redis/etc/redis.conf

netstat -tnl

结果显示端口6379,说明已经启动成功

再来进行测试,比如输入

Telnet localhost 6379

设置一个变量,输入

set one 1000

get one

1000

quit

就可以获取该值

输入 clear

接下来安装 redis 扩展模块,输入

cd

cd lamp/

ls

tar -xf phpredis-develop.zip

unzip phpredis-develop.zip

clear

ls

cd php

cd phpredis-develop

ls

/usr/local/php/bin/phpize

ls

执行完成后直接编译安装,输入

./configure --with-php-config=/usr/local/php/bin/php-config

make && make install

安装完后输入

Ls /usr/local/php/lib/php/extensions/no-debug-zts-20180731/

结果多出 redis.so 扩展模块

输入vi /usr/local/php/etc/php.ini

搜索找到 memcache

在下面添加 extension=”redis.so”;

退出后重启,然后打开 php.info

最后再来安装 composer,它是 php 的依赖管理工具

在一般情况下,安装包的数据多数是从 https://github.com 上下载的,安装包的元数据是从 http://packagist.org上下载的。

国内镜像服务器所做的就是缓存所有安装包和元数据到国内的机房并通过国内的CDN 进行加速,这样下载安装代码和更新加速的过程更加稳定。

国内镜像服务器 URL为https://pkg.phpcomposer.com。项目中常用的 Composer代码包如下

包名

说明

地址

guzzlehttp/guzzle

功能强大的HTTP请求库

https//packagist.org/packages/guzzlehttp/guzzle

hashids/hashides

数字ID转字符串。支持多语言

https://packagist.org/packages/hashids/hashids

intervention/image

图片处理,获取图片信息、上传、格式转换、缩放﹑裁剪等

https://packagist.org/packages/intervention/image

phpmailer/phpmaler

邮件发送

https://packagist.org/packages/phpmailer/phpmailer

phpoffice/phpexcel

excel操作类

https://packagist.org/packages/phpoffice/phpexcel

monolog/monolog

日志操作,composer官方就是用它做例子的

https://packagist.org/packages/monolog /monolog

catfen/medoo

简单易用的数据库操作类,支持各种常见数据库

https://packagist.org/packages/catfan/medoo

league/route

路由调度

https://packagist.org/packages/league/route

Carbon/Carbon

时间操作

https:/packagist.org/packages/nesbot/carbon

输入

cd

ls

cd lamp/

ls

vget https://getcomposer.org/composer.phar

下载完后进行拷贝,将文件放在指定目录,输入

Cp composer.phar /usr/local/bin/composer

Chmod u+x /usr/local/bin/composer

接下来可以设置国内镜像加速命令:

/usr/local/bin/composer \

显示找不见该命令,需要将该命令链接到环境变量中,输入

ln -s /usr/local/php/bin/php /usr/local/bin/

/usr/local/bin/composer -V

结果显示可执行,再输入

/usr/local/bin/composer \

以上就设置成了该镜像,但是具体的我们可以切换。

相关实践学习
基于Redis实现在线游戏积分排行榜
本场景将介绍如何基于Redis数据库实现在线游戏中的游戏玩家积分排行榜功能。
云数据库 Redis 版使用教程
云数据库Redis版是兼容Redis协议标准的、提供持久化的内存数据库服务,基于高可靠双机热备架构及可无缝扩展的集群架构,满足高读写性能场景及容量需弹性变配的业务需求。 产品详情:https://www.aliyun.com/product/kvstore &nbsp; &nbsp; ------------------------------------------------------------------------- 阿里云数据库体验:数据库上云实战 开发者云会免费提供一台带自建MySQL的源数据库&nbsp;ECS 实例和一台目标数据库&nbsp;RDS实例。跟着指引,您可以一步步实现将ECS自建数据库迁移到目标数据库RDS。 点击下方链接,领取免费ECS&amp;RDS资源,30分钟完成数据库上云实战!https://developer.aliyun.com/adc/scenario/51eefbd1894e42f6bb9acacadd3f9121?spm=a2c6h.13788135.J_3257954370.9.4ba85f24utseFl
相关文章
|
2月前
|
设计模式 算法 数据库连接
PHP中的设计模式:提高代码的可维护性与扩展性本文旨在探讨PHP中常见的设计模式及其应用,帮助开发者编写出更加灵活、可维护和易于扩展的代码。通过深入浅出的解释和实例演示,我们将了解如何使用设计模式解决实际开发中的问题,并提升代码质量。
在软件开发过程中,设计模式是一套经过验证的解决方案模板,用于处理常见的软件设计问题。PHP作为流行的服务器端脚本语言,也有其特定的设计模式应用。本文将重点介绍几种PHP中常用的设计模式,包括单例模式、工厂模式和策略模式,并通过实际代码示例展示它们的具体用法。同时,我们还将讨论如何在实际项目中合理选择和应用这些设计模式,以提升代码的可维护性和扩展性。
57 4
|
2月前
|
PHP
php常见问题,php.ini文件不存在或者找不到,mb_strlen()函数未定义系列问题,dll模块找不到的解决
本文介绍了解决PHP常见问题的步骤,包括定位和创建`php.ini`文件,以及解决`mb_strlen()`函数未定义和DLL模块加载错误的具体方法。
php常见问题,php.ini文件不存在或者找不到,mb_strlen()函数未定义系列问题,dll模块找不到的解决
|
12天前
|
NoSQL 安全 Linux
MongoDB PHP 扩展
10月更文挑战第19天
8 0
MongoDB PHP 扩展
|
2月前
|
设计模式 算法 PHP
PHP中的设计模式:策略模式的深入探索与实践在软件开发的广袤天地中,PHP以其独特的魅力和强大的功能,成为无数开发者手中的得力工具。而在这条充满挑战与机遇的征途上,设计模式犹如一盏明灯,指引着我们穿越代码的迷雾,编写出更加高效、灵活且易于维护的程序。今天,就让我们聚焦于设计模式中的璀璨明珠——策略模式,深入探讨其在PHP中的实现方法及其实际应用价值。
策略模式,这一设计模式的核心在于它为软件设计带来了一种全新的视角和方法。它允许我们在运行时根据不同情况选择最适合的解决方案,从而极大地提高了程序的灵活性和可扩展性。在PHP这门广泛应用的编程语言中,策略模式同样大放异彩,为开发者们提供了丰富的创作空间。本文将从策略模式的基本概念入手,逐步深入到PHP中的实现细节,并通过一个具体的实例来展示其在实际项目中的应用效果。我们还将探讨策略模式的优势以及在实际应用中可能遇到的挑战和解决方案,为PHP开发者提供一份宝贵的参考。
|
18天前
|
测试技术 PHP 开发工具
php性能监测模块XHProf安装与测试
【10月更文挑战第13天】php性能监测模块XHProf安装与测试
16 0
|
2月前
|
PHP
深入浅出PHP之文件上传功能
【9月更文挑战第26天】本文将带你了解PHP中的文件上传功能,从基本概念到实战操作,一步步教你如何实现文件上传。我们将通过代码示例和详细的解释,让你轻松掌握这一技能。
|
2月前
|
设计模式 存储 算法
PHP中的设计模式:策略模式的深入解析与应用在软件开发的浩瀚海洋中,PHP以其独特的魅力和强大的功能吸引了无数开发者。作为一门历史悠久且广泛应用的编程语言,PHP不仅拥有丰富的内置函数和扩展库,还支持面向对象编程(OOP),为开发者提供了灵活而强大的工具集。在PHP的众多特性中,设计模式的应用尤为引人注目,它们如同精雕细琢的宝石,镶嵌在代码的肌理之中,让程序更加优雅、高效且易于维护。今天,我们就来深入探讨PHP中使用频率颇高的一种设计模式——策略模式。
本文旨在深入探讨PHP中的策略模式,从定义到实现,再到应用场景,全面剖析其在PHP编程中的应用价值。策略模式作为一种行为型设计模式,允许在运行时根据不同情况选择不同的算法或行为,极大地提高了代码的灵活性和可维护性。通过实例分析,本文将展示如何在PHP项目中有效利用策略模式来解决实际问题,并提升代码质量。
|
3月前
|
数据处理 PHP 开发者
PHP中实现简易计算器功能
【8月更文挑战第31天】在编程的世界里,将理论应用到实践是检验知识掌握程度的试金石。本文将通过一个简单的PHP项目——构建一个简易计算器,引导你理解PHP的基本语法及其在实际应用中的运用。我们将从零开始,逐步搭建起这个计算器,并在过程中加深对PHP数据处理和函数使用的理解。无论你是初学者还是希望温故而知新的开发者,这篇文章都将为你提供一次愉快的编程之旅。
|
2月前
|
安全 关系型数据库 MySQL
PHP与MySQL交互:从入门到实践
【9月更文挑战第20天】在数字时代的浪潮中,掌握PHP与MySQL的互动成为了开发动态网站和应用程序的关键。本文将通过简明的语言和实例,引导你理解PHP如何与MySQL数据库进行对话,开启你的编程之旅。我们将从连接数据库开始,逐步深入到执行查询、处理结果,以及应对常见的挑战。无论你是初学者还是希望提升技能的开发者,这篇文章都将为你提供实用的知识和技巧。让我们一起探索PHP与MySQL交互的世界,解锁数据的力量!
|
2月前
|
NoSQL 关系型数据库 MySQL
不是 PHP 不行了,而是 MySQL 数据库扛不住啊
【9月更文挑战第8天】这段内容讨论了MySQL在某些场景下面临的挑战及其原因,并指出这些问题不能完全归咎于MySQL本身。高并发读写压力、数据量增长以及复杂查询和事务处理都可能导致性能瓶颈。然而,应用程序设计不合理、系统架构不佳以及其他数据库选择和优化策略不足也是重要因素。综合考虑这些方面才能有效解决性能问题,而MySQL通过不断改进和优化,仍然是许多应用场景中的可靠选择。
121 9