发布于2026-06-30 阅读(0)
扫一扫,手机访问
搭建PHP环境这件事,看起来步骤不少,但拆开来看其实很清晰。从系统更新、源码编译,到配置PHP-FPM、再挂上Nginx,每一环都有章可循。下面我们就按这个节奏一步步来。
先把系统收拾利索。运行yum update,确保所有包都是最新的——这一步能省去不少潜在的兼容性问题。

sudo yum update -y
接着把编译PHP所需的开发工具和常用依赖库一并装好。gcc、make是标配,再加上libxml2、openssl、bzip2、curl、jpeg、png、freetype这些扩展的devel包,一句话搞定:
sudo yum groupinstall "Development tools" -y
sudo yum install wget vim libxml2-devel openssl-devel bzip2-devel libcurl-devel libjpeg-devel libpng-devel freetype-devel gmp-devel libmcrypt-devel readline-devel libxslt-devel zlib-devel libicu-devel -y
注:如果你用的CentOS版本较新,有些包名可能微调,遇到缺失时根据提示安装即可。
到PHP官网挑一个稳定版,比如PHP 7.4.33(当然你也可以选7.4的最新子版本或8.x系列)。下载后解压到/usr/local/src:
cd /usr/local/src
wget https://www.php.net/distributions/php-7.4.33.tar.gz
tar zxvf php-7.4.33.tar.gz
cd php-7.4.33
运行configure脚本时,参数可以按需调整。下面这个配置几乎涵盖了日常开发所需的所有功能:FPM进程管理、MySQL支持(mysqlnd驱动)、GD库、OpenSSL、mbstring、OPcache、cURL等等。直接贴出来:
./configure --prefix=/usr/local/php \
--with-config-file-path=/usr/local/php/etc \
--enable-fpm \
--with-fpm-user=www \
--with-fpm-group=www \
--with-mysqli=mysqlnd \
--with-pdo-mysql=mysqlnd \
--with-openssl \
--with-zlib \
--enable-mbstring \
--with-gd \
--with-jpeg-dir \
--with-png-dir \
--with-freetype-dir \
--enable-opcache \
--enable-sockets \
--enable-zip \
--with-curl \
--with-libxml-dir \
--disable-rpath
如果提示缺少某个头文件(比如mcrypt.h not found),别慌,装上对应的libmcrypt-devel再重新跑一遍configure就好。
编译这一步,耐心点。用make -j$(nproc)可以利用多核加速,然后sudo make install把文件装到指定目录:
make -j$(nproc)
sudo make install
跑一下版本命令,看到输出就说明成了:
/usr/local/php/bin/php -v
如果显示PHP 7.4.33 (cli)之类的信息,这一步就稳了。
把源码目录里的php.ini-development拷贝到/usr/local/php/etc/php.ini(生产环境建议用php.ini-production)。之后可以根据需要调整memory_limit、upload_max_filesize等参数。
sudo cp php.ini-development /usr/local/php/etc/php.ini
PHP-FPM负责管理PHP进程。复制两份配置文件:
sudo cp sapi/fpm/php-fpm.conf /usr/local/php/etc/php-fpm.conf
sudo cp sapi/fpm/www.conf /usr/local/php/etc/php-fpm.d/www.conf
编辑www.conf,把用户、组、监听方式搞定。推荐用Unix socket(性能更好),同时设置好进程数:
[www]
user = www
group = www
listen = /tmp/php-fpm.sock
listen.owner = www
listen.group = www
pm = dynamic
pm.max_children = 50
pm.start_servers = 10
pm.min_spare_servers = 5
pm.max_spare_servers = 20
把PHP-FPM注册为系统服务,然后启动并设置开机自启:
sudo cp sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm
sudo chmod +x /etc/init.d/php-fpm
sudo systemctl start php-fpm
sudo systemctl enable php-fpm
查看状态,如果显示active (running),就说明PHP-FPM已经跑起来了。
光有PHP还不够,得让Web服务器能解析PHP文件。我们以Nginx为例。
sudo yum install nginx -y
sudo systemctl start nginx
sudo systemctl enable nginx
编辑Nginx配置文件(比如/etc/nginx/conf.d/default.conf),加入PHP解析规则。重点是fastcgi_pass要指向刚才设置的Unix socket路径:
server {
listen 80;
server_name localhost;
root /usr/share/nginx/html;
index index.php index.html index.htm;
location / {
try_files $uri $uri/ =404;
}
location ~ \.php$ {
include fastcgi_params;
fastcgi_pass unix:/tmp/php-fpm.sock;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param PATH_INFO $fastcgi_path_info;
}
location ~ /\. {
deny all;
}
}
在Web根目录下创建一个info.php,内容就是一行:
echo "" | sudo tee /usr/share/nginx/html/info.php
重启Nginx,然后在浏览器里访问http://服务器IP/info.php。如果看到PHP的信息页面,说明整个环境已经完美跑通了。
php-fpm.conf里的user/group是否有权限,或者端口/sock文件是否被占用。用sudo systemctl status php-fpm查看具体报错。fastcgi_pass路径与PHP-FPM的listen完全一致,且php-fpm.sock文件确实存在(ls /tmp/php-fpm.sock)。*-devel包,比如libmcrypt-devel、libzip-devel等,装完重新configure。以上这套流程走下来,CentOS上从零到一的PHP环境就算扎实了。后续整合其他扩展或调优性能,都是在这些基础上的事了。
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
正版软件
正版软件
正版软件
正版软件
正版软件
1
2
3
7
8