环境Ubuntu-18.0.4php7.4.20
序言php的安装应该是php程序开发者必备的技能,建议读者一步步跟着教程做,对每条命令自行测试;
- 到PHP官网下载tar.gz格式的源码包,我下载的版本是7.4.20,下载软件到本地目录/var/local/src(此目录自定义),并解压,
> tar -zxvf php-7.4.20.tar.gz
- 安装依赖可以提前安装好(也可以后续一个个安装);
> apt install -y build-essential gcc libcurl3-dev pkg-config libxml2-dev libssl-dev sqlite3 libsqlite3-dev libbz2-dev libgmp3-dev libonig-dev libedit-dev libreadline-dev libxslt1-dev autoconf postgresql
- 检测环境
./configure --prefix=/usr/local/php74 --with-config-file-path=/usr/local/php74/ini_path --with-config-file-scan-dir=/usr/local/php74/config_path --enable-MySQLnd --with-pdo-mysql --with-pdo-mysql=mysqlnd --enable-bcmath --enable-fpm --with-fpm-user=www-data --with-fpm-group=www-data --enable-mbstring --enable-phpdbg --enable-shmop --enable-sockets --enable-sysvmsg --enable-sysvsem --enable-sysvshm --with-zlib --with-curl --with-pear --with-openssl --enable-pcntl --with-readlinenotes: 可以输入./configure --help来查看php安装的配置项清单,可以自由选择,按需配置(不明白的可以自行搜索);
- 出现如下画面,说明环境正常,可以开始编译安装了
- 编译和安装
> make && make install
- 出现如下画面,说明安装成功了
- 设置环境变量
> vi /etc/profile# 添加> export PATH=$PATH:/usr/local/php74/bin# 加载配置文件> source/etc/profile
- 测试查看PHP版本
> php -v
- 配置php.ini文件
# 将源码中的配置文件复制到PHP的配置文件中> cp /usr/local/src/php-7.4.20/php.ini-production /usr/local/php74/ini_path/php.ini
- 创建php-fpm软链接
> ln -s /usr/local/php74/sbin/php-fpm/usr/local/php74/bin/php-fpm# 检测是否成功> php-fpm -v
- 配置php-fpm
# 将PHP目录中的php-fpm配置文件进行修改> cd /usr/local/php74/etc> cp php-fpm.conf.default php-fpm.conf> cp php-fpm.d/www.conf.default php-fpm.d/www.conf
- 启动php-fpm
> php-fpm没有报错(没有消息就是最好的消息)验证php-fpm是否启动成功> ps -ef|grep php-fpm> netstat -tnl | grep 9000 # php-fpm默认是9000端口
- 配置php-fpm系统自启动
> vi /etc/rc.local(如果没有创建一个)文件内容:#!/bin/sh/usr/local/php74/sbin/php-fpm保存退出> chmod a+x /etc/rc.local
- 查看安装了哪些扩展
> php -m
- 安装扩展,以安装ftp扩展为例
> cd /usr/local/src/php-7.4.20/ext (源代码解压目录下的扩展目录)> cd ftp> phpize> ./configure> make && make install在配置文件(php.ini)中开启扩展,如果没有"extension=ftp",可以加上去,有的话,将前面的分号去掉即可重启php-fpm> killall php-fpm && php-fpm> php -m 查看
推荐阅读
- Spring IOC容器对Bean实例化的过程详解源码分析
- 亲自啃了一周,终于把Mybatis源码理清,以后简历请写精通二字
- @Import注解的作用
- Google 和 Facebook 为什么不用 Git 管理源码?
- 从 Linux 源码看 Socket 的阻塞和非阻塞
- Spring源码分析之IOC循环依赖详解
- JS中的预编译如何进行?看完这篇就够了
- 一篇文章读透nginx源码
- 技术分享——gcc、clang、msvc等编译器的区别
- Python爬虫案例,腾讯动漫爬虫,步骤超详细解释,源码分析