记录一下安装PHP8的过程
环境
OS : CentOS 7.9.2009
Arch : x86_64 (64 Bit)
Kernel : 5.13.0-1.el7.elrepo.x86_64
开始安装
下载
首先下载并进去解压的文件夹内
wget https://www.php.net/distributions/php-8.0.8.tar.gz
tar -zvxf php-8.0.8.tar.gz
cd php-8.0.8
检查并配置
然后准备一下前置操作并进行检查 --prefix是指定安装的路径位置
./configure --prefix=/usr/local/php
更多用法参数可以./configure --help
查看
我这里在最后有个提示No package 'sqlite3' found
这里安装一下yum install sqlite-devel
;
centos7 编译安装php7遇到的问题
./configure 配置遇到的No package ‘libxml-2.0‘ found缺失libxml2.0 库,解决方法:
yum -y install libxml2
yum -y install libxml2-devel
./configure 配置遇到的No package ‘sqlite3‘ found,解决方法:
yum -y install sqlite-devel
解决提示之后再执行./configure --prefix=/usr/local/php
此时会出现'Thank you for using PHP'
构建及安装
开始构建进行安装操作 此步骤耗时可能比较久
make && make install
结果如图
此时就装好了
执行/usr/local/php/bin/php -v
可看到结果
PHP 8.0.8 (cli) (built: Jul 7 2021 00:58:51) ( NTS )
Copyright (c) The PHP Group
Zend Engine v4.0.8, Copyright (c) Zend Technologies
完善
短命令
这个时候使用PHP还必须使用绝对路径,此时想要直接通过PHP命令来运行是不行的,这里说两种配置方法 (其实就是windows下的系统环境变量一样,分用户和系统)
当前用户环境配置
可以仅仅给当前用户配置,比如当前连接ssh的是root用户.直接修改/root/.bash_profile
在里面末尾加上一条命令别名alias php=/usr/local/php/bin/php
,然后断开重新连接ssh或者执行命令source /root/.bash_profile
来刷新一下,此时直接执行php -v
即可查看版本号,无需完整路径
系统环境配置
在.bash_profile文件内可以看到,他里面有这个设置环境变量
PATH=$PATH:$HOME/bin
export PATH
打印出来这个PATH结果是/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin:/root/bin
,说明用户的环境变量是从这里继承的,也就是执行命令时会从这里面找,找不到才报错'command not found',
所以建一个PHP执行文件的软连接进去到目录内就可以了,
ln -s /usr/local/php/bin/php /usr/sbin/
ln -s /usr/local/php/bin/php /usr/bin/
这样就可以直接运行php -v
也能运行了,所有用户都有效
php.ini文件
这是是php的配置文件位置,我们开启或关闭扩展可能要用到.首先看配置文件中php.ini文件的位置php -i | grep php.ini
,看出文件位置在'Path => /usr/local/php/lib',这个是默认路径,可以在安装的时候在configure 那一步增加参数设置文件位置
./configure --prefix=/usr/local/php --with-config-file-path=php.ini的文件路径
更多参数可在./configure --help
命令中查看.
php.ini文件的默认模板文件在安装PHP时候下载的源码包里面.cp /root/php-8.0.8/php.ini-development /usr/local/php/lib/php.ini
移动过去就好了