Linux PHP多版本编译安装及快捷切换版本
编译安装
安装多个版本的PHP其实毫无压力,主要是编译安装的时候--prefix和--with-config-file-path设置为不同的目录即可。
分享我编译安装的命令:
./configure --prefix=/usr/local/php/ --enable-debug --enable-gd --with-freetype --with-jpeg --with-webp --enable-fpm --with-config-file-path=/usr/local/php/etc/ --with-iconv --enable-mbregex --with-openssl --enable-pcntl --with-curl --with-pdo-mysql --enable-mbstring --with-mysql-sock=/var/lib/mysql/mysql.sock --with-zlib
这是开了debug的版本,但是开发的同学一般都不需要,直接去掉 --enable-debug即可。
编译安装完成后,记得初始化php.ini,将php.ini-production文件重命名为php.ini并放在--with-config-file-path定义的目录中即可。
但是此时,还不能使用PHP命令,因此需要将PHP的运行目录写入到.bashrc中,即
sudo vim ~/.bashrc
在文件的末尾加上
export PATH=/usr/local/php/bin:$PATH
export PATH=/usr/local/php/sbin:$PATH
重新载入
source ~/.bashrc
此时使用php --ini命令即可查看到php.ini文件的位置
[moxi@localhost ~]$ php --ini
Configuration File (php.ini) Path: /usr/local/php80/etc/
Loaded Configuration File: /usr/local/php80/etc/php.ini
Scan for additional .ini files in: (none)
Additional .ini files parsed: (none)
快捷切换
安装了多个版本的PHP以后,每次都要通过编辑./bashrc来切换版本未免太过繁琐,有没有更便捷的方式呢?
方法1
通过更新软链的方式切换PHP版本
sudo ln -sf /usr/local/php80/bin/php /usr/bin/php
/usr/local/php/bin/php是你的PHP安装目录,即--prefix定义的目录+/bin/php
但是这种方法,还是不快捷!
我们可以通过给命令取别名的方式,简化运行命令的成本
sudo vim ~/.bashrc
// 将下面的命令添加到文件末尾
alias php80='sudo ln -sf /usr/local/php80/bin/php /usr/bin/php'
// 保存并退出
// 重新载入
. ~/.bashrc
方法2
增加一个配置文件,将配置环境变量的命令放入其中,需要切换版本的时候载入对应的配置文件即可
vim ~/php80 (以.开头的文件会被隐藏,这个配置文件不重要,所以没必要隐藏)
// 将下列命令写入
export PATH=/usr/local/php80/bin:$PATH
export PATH=/usr/local/php80/sbin:$PATH
// 保存并退出
重新载入的命令还是太长了,我们再给这个命令起个别名
// 将下面的命令添加到~/.bashrc中并重新载入即可
alias php80='. ~/php80'
效果
[moxi@localhost ~]$ php80
[moxi@localhost ~]$ php -v
PHP 8.0.21 (cli) (built: Aug 15 2022 19:33:34) ( NTS DEBUG )
Copyright (c) The PHP Group
Zend Engine v4.0.21, Copyright (c) Zend Technologies
[moxi@localhost ~]$ php81
[moxi@localhost ~]$ php -v
PHP 8.1.6 (cli) (built: Jul 31 2022 03:26:52) (NTS DEBUG)
Copyright (c) The PHP Group
Zend Engine v4.1.6, Copyright (c) Zend Technologies
安装多个版本的PHP其实毫无压力,主要是编译安装的时候--prefix和--with-config-file-path设置为不同的目录即可。
分享我编译安装的命令:
./configure --prefix=/usr/local/php/ --enable-debug --enable-gd --with-freetype --with-jpeg --with-webp --enable-fpm --with-config-file-path=/usr/local/php/etc/ --with-iconv --enable-mbregex --with-openssl --enable-pcntl --with-curl --with-pdo-mysql --enable-mbstring --with-mysql-sock=/var/lib/mysql/mysql.sock --with-zlib
这是开了debug的版本,但是开发的同学一般都不需要,直接去掉 --enable-debug即可。
编译安装完成后,记得初始化php.ini,将php.ini-production文件重命名为php.ini并放在--with-config-file-path定义的目录中即可。
但是此时,还不能使用PHP命令,因此需要将PHP的运行目录写入到.bashrc中,即
sudo vim ~/.bashrc
在文件的末尾加上
export PATH=/usr/local/php/bin:$PATH
export PATH=/usr/local/php/sbin:$PATH
重新载入
source ~/.bashrc
此时使用php --ini命令即可查看到php.ini文件的位置
[moxi@localhost ~]$ php --ini
Configuration File (php.ini) Path: /usr/local/php80/etc/
Loaded Configuration File: /usr/local/php80/etc/php.ini
Scan for additional .ini files in: (none)
Additional .ini files parsed: (none)
快捷切换
安装了多个版本的PHP以后,每次都要通过编辑./bashrc来切换版本未免太过繁琐,有没有更便捷的方式呢?
方法1
通过更新软链的方式切换PHP版本
sudo ln -sf /usr/local/php80/bin/php /usr/bin/php
/usr/local/php/bin/php是你的PHP安装目录,即--prefix定义的目录+/bin/php
但是这种方法,还是不快捷!
我们可以通过给命令取别名的方式,简化运行命令的成本
sudo vim ~/.bashrc
// 将下面的命令添加到文件末尾
alias php80='sudo ln -sf /usr/local/php80/bin/php /usr/bin/php'
// 保存并退出
// 重新载入
. ~/.bashrc
方法2
增加一个配置文件,将配置环境变量的命令放入其中,需要切换版本的时候载入对应的配置文件即可
vim ~/php80 (以.开头的文件会被隐藏,这个配置文件不重要,所以没必要隐藏)
// 将下列命令写入
export PATH=/usr/local/php80/bin:$PATH
export PATH=/usr/local/php80/sbin:$PATH
// 保存并退出
重新载入的命令还是太长了,我们再给这个命令起个别名
// 将下面的命令添加到~/.bashrc中并重新载入即可
alias php80='. ~/php80'
效果
[moxi@localhost ~]$ php80
[moxi@localhost ~]$ php -v
PHP 8.0.21 (cli) (built: Aug 15 2022 19:33:34) ( NTS DEBUG )
Copyright (c) The PHP Group
Zend Engine v4.0.21, Copyright (c) Zend Technologies
[moxi@localhost ~]$ php81
[moxi@localhost ~]$ php -v
PHP 8.1.6 (cli) (built: Jul 31 2022 03:26:52) (NTS DEBUG)
Copyright (c) The PHP Group
Zend Engine v4.1.6, Copyright (c) Zend Technologies