centos 安装 多个php
在 CentOS 上安装多个 PHP 版本是一个常见的需求,尤其是在需要同时支持不同项目或模块的情况下。以下是详细的步骤来实现这一目标: --- ### **1. 确认当前环境** 在开始之前,请确保你的系统是最新的,并且已经安装了必要的工具: ```bash sudo yum update -y ``` --- ### **2. 安装依赖包** 为了编译和管理多个 PHP 版本,你需要安装一些依赖工具: ```bash sudo yum groupinstall "Development Tools" -y sudo yum install epel-release -y sudo yum install wget gcc make autoconf libtool bzip2-devel openssl-devel pcre-devel zlib-devel gd-devel libxml2-devel libcurl-devel libjpeg-devel libpng-devel freetype-devel mysql-devel sqlite-devel -y ``` --- ### **3. 下载并编译多个 PHP 版本** 我们可以通过源码编译的方式来安装多个 PHP 版本。假设我们需要安装 PHP 7.4 和 PHP 8.1。 #### **(1) 下载 PHP 源码** 进入一个临时目录(如 `/usr/local/src`),下载所需的 PHP 版本: ```bash cd /usr/local/src wget https://www.php.net/distributions/php-7.4.33.tar.gz wget https://www.php.net/distributions/php-8.1.10.tar.gz ``` #### **(2) 解压并配置 PHP** 为每个版本创建独立的安装目录,并分别进行配置、编译和安装。 ##### PHP 7.4 ```bash tar xzf php-7.4.33.tar.gz cd php-7.4.33 # 配置选项:指定安装路径和扩展模块 ./configure \\ --prefix=/opt/php74 \\ --with-config-file-path=/opt/php74/etc \\ --with-pdo-mysql \\ --with-zlib \\ --with-curl \\ --with-openssl \\ --with-gd \\ --with-jpeg \\ --with-png \\ --with-freetype \\ --enable-bcmath \\ --enable-mbstring \\ --enable-zip \\ --enable-exif \\ --disable-debug # 编译并安装 make && sudo make install ``` ##### PHP 8.1 ```bash cd ../php-8.1.10 # 配置选项:指定安装路径和扩展模块 ./configure \\ --prefix=/opt/php81 \\ --with-config-file-path=/opt/php81/etc \\ --with-pdo-mysql \\ --with-zlib \\ --with-curl \\ --with-openssl \\ --with-gd \\ --with-jpeg \\ --with-png \\ --with-freetype \\ --enable-bcmath \\ --enable-mbstring \\ --enable-zip \\ --enable-exif \\ --disable-debug # 编译并安装 make && sudo make install ``` --- ### **4. 配置 PHP** 为每个 PHP 版本创建配置文件和启动脚本。 #### **(1) 创建配置文件** 将默认的 `php.ini` 文件复制到对应的安装目录: ```bash sudo cp php.ini-production /opt/php74/etc/php.ini sudo cp php.ini-production /opt/php81/etc/php.ini ``` #### **(2) 创建启动脚本** 为每个 PHP 版本创建一个启动脚本,例如 `/etc/init.d/php74` 和 `/etc/init.d/php81`。 以 PHP 7.4 的启动脚本为例: ```bash sudo nano /etc/init.d/php74 ``` 添加以下内容: ```bash #!/bin/bash PHP_BIN="/opt/php74/bin/php" PHP_FPM_BIN="/opt/php74/sbin/php-fpm" case "$1" in start) echo "Starting PHP-FPM 7.4..." $PHP_FPM_BIN --fpm-config /opt/php74/etc/php-fpm.conf ;; stop) echo "Stopping PHP-FPM 7.4..." killall -9 php-fpm ;; restart) $0 stop $0 start ;; *) echo "Usage: $0 {start|stop|restart}" exit 1 esac exit 0 ``` 赋予执行权限: ```bash sudo chmod +x /etc/init.d/php74 sudo chmod +x /etc/init.d/php81 ``` --- ### **5. 配置 Web 服务器** 如果你使用 Apache 或 Nginx,需要为每个 PHP 版本配置不同的 FastCGI 路径。 #### **(1) Apache 配置** 编辑 Apache 的虚拟主机配置文件,为每个 PHP 版本设置不同的 `ProxyPassMatch` 规则: ```apache <VirtualHost *:80> ServerName example.com <FilesMatch \\.php$> SetHandler "proxy:unix:/opt/php74/var/run/php-fpm.sock|fcgi://localhost/" </FilesMatch> DocumentRoot /var/www/html </VirtualHost> <VirtualHost *:80> ServerName example.com/php81 <FilesMatch \\.php$> SetHandler "proxy:unix:/opt/php81/var/run/php-fpm.sock|fcgi://localhost/" </FilesMatch> DocumentRoot /var/www/html </VirtualHost> ``` #### **(2) Nginx 配置** 编辑 Nginx 的配置文件,为每个 PHP 版本设置不同的 FastCGI 路径: ```nginx server { listen 80; server_name example.com; location ~ \\.php$ { fastcgi_pass unix:/opt/php74/var/run/php-fpm.sock; include fastcgi_params; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; } } server { listen 80; server_name example.com/php81; location ~ \\.php$ { fastcgi_pass unix:/opt/php81/var/run/php-fpm.sock; include fastcgi_params; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; } } ``` --- ### **6. 启动和验证** 启动各个 PHP-FPM 服务: ```bash sudo service php74 start sudo service php81 start ``` 访问相应的域名或路径,检查是否正确加载了对应的 PHP 版本。 --- ### **7. 卸载或切换版本** 如果需要卸载某个 PHP 版本,可以直接删除其安装目录: ```bash sudo rm -rf /opt/php74 sudo rm -rf /opt/php81 ``` 若需要切换版本,只需修改 Web 服务器的配置文件并重启服务即可。 --- 通过以上步骤,你可以在 CentOS 上成功安装和管理多个 PHP 版本。如果有任何问题或需要进一步的帮助,请随时告知!