在Linux系统中安装PHP是Web开发中的常见需求,无论是搭建WordPress、Laravel等应用,还是运行自定义的PHP脚本,都需要正确安装并配置PHP环境,本文将以主流Linux发行版(如Ubuntu/Debian、CentOS/RHEL、Arch Linux)为例,详细介绍PHP的安装步骤,包括环境准备、版本选择、扩展安装及与Web服务器的集成,并附上常见问题解答。
安装前的环境准备
在安装PHP之前,需要确保系统基础环境已就绪,包括更新系统软件包、安装必要的编译工具(若源码编译)及依赖库,不同发行版的命令略有差异:
- Ubuntu/Debian:
sudo apt update && sudo apt upgrade -y sudo apt install -y build-essential libxml2-dev libssl-dev libcurl4-openssl-dev libjpeg-dev libpng-dev libonig-dev libzip-dev
- CentOS/RHEL(需先安装EPEL源):
sudo yum update -y sudo yum install -y epel-release gcc libxml2-devel openssl-devel curl-devel libjpeg-turbo-devel libpng-devel oniguruma-devel libzip-devel
- Arch Linux:
sudo pacman -Syu sudo pacman -S base-devel libxml2 openssl curl libjpeg-turbo libpng oniguruma libzip
这些依赖库是PHP编译和运行常用扩展(如XML、SSL、图像处理等)的基础,务必提前安装。
通过包管理器安装PHP(推荐)
对于大多数用户,使用系统自带的包管理器安装PHP是最简单的方式,可自动处理依赖关系和版本管理,不同发行版的默认PHP版本不同,若需安装特定版本(如PHP 8.1),可能需要添加第三方源。
Ubuntu/Debian系统
Ubuntu 22.04默认PHP版本为8.1,20.04为7.4,若需安装其他版本(如8.2),需先添加PPA源:
# 添加Ondřej Surý的PHP PPA(包含多个PHP版本) sudo apt install -y software-properties-common sudo add-apt-repository -y ppa:ondrej/php sudo apt update
安装PHP及常用扩展:
# 安装PHP 8.2(替换8.2为其他版本如8.1/7.4) sudo apt install -y php8.2 php8.2-cli php8.2-fpm php8.2-mysql php8.2-xml php8.2-curl php8.2-gd php8.2-mbstring php8.2-zip
php-cli
:命令行接口,用于脚本执行;php-fpm
:FastCGI进程管理器,常与Nginx搭配;php-mysql
:MySQL/MariaDB数据库扩展;- 其他扩展根据项目需求安装(如
php-redis
用于Redis缓存)。
CentOS/RHEL系统
CentOS 7/8默认源中的PHP版本较旧(如7.2),建议使用Remi源安装较新版本:
# 安装EPEL和Remi源 sudo yum install -y epel-release https://rpms.remirepo.net/enterprise/remi-release-$(rpm -E %rhel).rpm # 启用Remi源的PHP模块(以CentOS 8为例,使用dnf) sudo dnf module enable php:remi-8.2 -y
安装PHP及扩展:
sudo dnf install -y php php-cli php-fpm php-mysqlnd php-xml php-curl php-gd php-mbstring php-zip
php-mysqlnd
:MySQL原生驱动,替代旧版的php-mysql
;- 安装后启动并设置开机启动:
sudo systemctl start php-fpm sudo systemctl enable php-fpm
Arch Linux系统
Arch Linux默认使用较新的PHP版本,直接通过pacman安装:
sudo pacman -S php php-apache php-mysql php-xml php-curl php-gd php-mbstring php-zip
安装后需配置Apache(若使用Apache),启用PHP模块:
sudo nano /etc/httpd/conf/httpd.conf # 添加以下行(若未存在) LoadModule php_module modules/libphp.so AddHandler php-script .php Include conf/extra/php_module.conf
启动Apache并测试:
sudo systemctl start httpd sudo systemctl enable httpd
源码编译安装PHP(可选)
若包管理器的版本不满足需求(如特殊定制版本),可从PHP官网下载源码编译安装,以PHP 8.2为例:
# 下载源码(需先安装依赖库,见第一部分) wget https://www.php.net/distributions/php-8.2.12.tar.gz tar -xzf php-8.2.12.tar.gz cd php-8.2.12 # 配置编译选项(可./configure --help查看更多选项) ./configure --enable-fpm --enable-mysqlnd --enable-xml --enable-curl --enable-gd --enable-mbstring --with-jpeg --with-zip --with-openssl # 编译并安装 make -j$(nproc) sudo make install
编译安装后,PHP可执行文件位于/usr/local/bin/php
,配置文件需手动复制到/usr/local/etc/php/
,并修改php.ini
和php-fpm.conf
,此方式复杂,不建议新手使用。
PHP配置与测试
安装完成后,需验证PHP是否正常工作,并根据需求调整配置。
检查PHP版本
php -v # 命令行版本 php-fpm -v # FPM版本(若安装)
修改php.ini配置文件
php.ini位置因安装方式而异:
- Ubuntu/Debian(PHP 8.2):
/etc/php/8.2/cli/php.ini
(命令行)或/etc/php/8.2/fpm/php.ini
(FPM); - CentOS/RHEL(PHP 8.2):
/etc/php.ini
或/etc/php-fpm.d/www.conf
中的php_admin_value[open_basedir]
等; - Arch Linux:
etc/php/php.ini
。
常见配置修改:
# 调整时区(避免PHP警告) date.timezone = Asia/Shanghai # 开启错误显示(开发环境) error_reporting = E_ALL display_errors = On # 上传文件大小限制 upload_max_filesize = 32M post_max_size = 32M
修改后保存,并重启PHP-FPM(若使用):
sudo systemctl restart php8.2-fpm # Ubuntu/CentOS sudo systemctl restart php-fpm # Arch
创建测试文件
若使用Apache/Nginx,需在Web根目录(如/var/www/html
)创建info.php
文件:
sudo nano /var/www/html/info.php ``` 为: ```php <?php phpinfo(); ?>
访问浏览器http://服务器IP/info.php
,若显示PHP详细信息页面,说明安装成功,测试完成后建议删除info.php
(安全风险)。
与Web服务器集成
PHP通常与Web服务器(Apache/Nginx)配合使用,需正确配置服务器以解析PHP文件。
Apache配置
- Ubuntu/Debian:Apache默认已集成PHP模块,无需额外配置;
- CentOS/RHEL:需启用
php_module
(见Arch部分); - Arch Linux:需在
httpd.conf
中添加PHP模块(见Arch部分)。
重启Apache:sudo systemctl restart httpd
。
Nginx配置
Nginx本身不解析PHP,需通过PHP-FPM处理,以Ubuntu为例,修改Nginx站点配置(如/etc/nginx/sites-available/default
):
server { listen 80; root /var/www/html; index index.php index.html; location ~ .php$ { fastcgi_pass unix:/run/php/php8.2-fpm.sock; # Ubuntu/CentOS路径可能不同 fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } }
重启Nginx和PHP-FPM:
sudo systemctl restart nginx php8.2-fpm
常用PHP扩展管理
安装PHP后,可通过包管理器动态添加或移除扩展:
- Ubuntu/Debian:
sudo apt install php8.2-redis # 安装Redis扩展 sudo apt remove php8.2-gd # 移除GD扩展
- CentOS/RHEL:
sudo dnf install php-redis # 安装Redis扩展 sudo dnf remove php-gd # 移除GD扩展
- Arch Linux:
sudo pacman -S php-redis # 安装Redis扩展 sudo pacman -R php-gd # 移除GD扩展
安装扩展后需重启PHP-FPM和Web服务器使配置生效。
常见问题FAQs
Q1:安装PHP后,浏览器访问PHP文件显示下载或空白怎么办?
A:通常是因为Web服务器未正确配置PHP解析。
- Apache:检查是否加载了
libphp.so
模块,并确保AddHandler php-script .php
已配置; - Nginx:检查
fastcgi_pass
路径是否正确(如/run/php/php8.2-fpm.sock
),以及SCRIPT_FILENAME
参数是否匹配; - 权限问题:确保PHP文件所在目录及文件有Web服务器用户(如
www-data
、nginx
)的读取权限,sudo chown -R www-data:www-data /var/www/html sudo chmod -R 755 /var/www/html
Q2:如何切换PHP版本(如从8.1切换到8.2)?
A:不同发行版切换方式不同:
- Ubuntu/Debian:使用
update-alternatives
或切换PHP-FPM池。- 安装多个PHP版本(如8.1和8.2);
- 更新Apache/Nginx配置中的PHP模块路径(如
/usr/lib/apache2/modules/libphp8.2.so
); - 重启Web服务器和PHP-FPM:
sudo a2dismod php8.1 && sudo a2enmod php8.2 # Apache sudo systemctl restart apache2 php8.2-fpm
- CentOS/RHEL:通过
yum module
切换:sudo dnf module reset php sudo dnf module enable php:remi-8.2 -y sudo dnf install php php-fpm sudo systemctl restart httpd php-fpm
- Arch Linux:直接安装新版本PHP,并修改
httpd.conf
中的模块路径,重启服务即可。
原创文章,发布者:酷番叔,转转请注明出处:https://cloud.kd.cn/ask/37747.html