在linux虚拟机中搭建php环境是开发php项目的基础操作,整个过程需要结合系统环境、依赖组件和php自身配置逐步完成,确保环境稳定运行。

前期环境准备
首先需要确认linux虚拟机的系统版本,本文以CentOS 7系统为例进行演示,其他linux发行版操作逻辑类似,仅包管理命令存在差异。同时需要保证虚拟机已经可以正常联网,能够使用yum或者apt等包管理工具安装依赖。
搭建php之前建议先安装基础的编译工具和系统依赖,避免后续编译php时出现缺失依赖的错误,执行以下命令安装基础依赖:
# 安装编译工具和基础依赖 yum install -y gcc gcc-c++ make autoconf wget # 安装php运行需要的依赖库 yum install -y libxml2-devel openssl-devel curl-devel libjpeg-devel libpng-devel freetype-devel
下载并编译安装php
接下来需要获取php的源码包,建议选择稳定的长期支持版本,这里以php 8.1为例,执行以下命令下载并解压源码:
# 下载php 8.1源码包 wget https://www.php.net/distributions/php-8.1.22.tar.gz # 解压源码包 tar -zxvf php-8.1.22.tar.gz # 进入解压后的目录 cd php-8.1.22
解压完成后需要进行配置编译参数,根据需求开启对应的功能模块,基础配置命令如下:
./configure --prefix=/usr/local/php --with-config-file-path=/usr/local/php/etc --enable-fpm --with-openssl --with-curl --with-gd --with-jpeg --with-png --with-freetype --enable-mysqlnd --with-mysqli --with-pdo-mysql
配置完成后执行编译和安装命令,编译过程会根据服务器配置耗时几分钟到十几分钟不等:
# 编译,-j参数可以指定并行编译的线程数,加快编译速度 make -j4 # 安装 make install
配置php和php-fpm
安装完成后需要复制默认的配置文件到指定目录,首先复制php的配置文件:
# 复制php.ini默认配置 cp php.ini-production /usr/local/php/etc/php.ini
接下来配置php-fpm,php-fpm是php的进程管理器,用于和nginx、apache等web服务器配合处理php请求:
# 复制php-fpm默认配置 cp /usr/local/php/etc/php-fpm.conf.default /usr/local/php/etc/php-fpm.conf cp /usr/local/php/etc/php-fpm.d/www.conf.default /usr/local/php/etc/php-fpm.d/www.conf
可以修改www.conf配置文件调整php-fpm的运行用户和用户组,避免权限问题,找到以下配置项修改:
; 修改前 user = nobody group = nobody ; 修改后,根据实际web服务器用户调整,比如nginx默认用户是nginx user = nginx group = nginx
启动php-fpm并验证
配置完成后可以启动php-fpm服务,首先添加php-fpm的系统服务配置,方便后续管理:
# 复制php-fpm服务文件到系统服务目录 cp sapi/fpm/php-fpm.service /usr/lib/systemd/system/ # 重新加载系统服务 systemctl daemon-reload # 启动php-fpm systemctl start php-fpm # 设置开机自启 systemctl enable php-fpm # 查看php-fpm运行状态 systemctl status php-fpm
启动成功后可以验证php是否安装正常,执行以下命令查看php版本:
/usr/local/php/bin/php -v
如果输出php的版本信息,说明php核心安装成功。如果需要配合web服务器使用,还需要配置nginx或者apache将php请求转发给php-fpm处理,以nginx为例,在nginx配置文件中添加以下配置:
location ~ .php$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
之后在nginx的网站根目录创建index.php文件,内容如下:
<?php phpinfo(); ?>
访问该文件如果能够看到php的信息页面,说明整个php环境搭建完成,可以正常处理php请求。
常见问题解决
- 编译时提示缺失依赖:根据错误提示安装对应的devel包即可,比如提示libxml2缺失就安装libxml2-devel
- php-fpm启动失败:查看
/usr/local/php/var/log/php-fpm.log日志文件,根据错误信息调整配置 - web服务器访问php文件返回空白:检查php-fpm是否正常运行,以及nginx的fastcgi_pass配置是否和php-fpm的监听地址一致