一、更新系统包列表
在Debian上安装PHP前,需确保系统包列表为最新状态,避免因包版本冲突导致安装失败。执行以下命令更新列表:
sudo apt update
sudo apt upgrade -y # 可选:升级已安装的包到最新版本
二、安装PHP及常用扩展
Debian默认仓库提供多版本PHP(如8.2、8.1),可根据项目需求选择。以下以PHP 8.2为例,安装基础包及常用扩展(覆盖数据库、JSON、XML、加密等功能):
sudo apt install php8.2 php8.2-cli php8.2-fpm php8.2-mysql php8.2-curl php8.2-gd php8.2-mbstring php8.2-xml php8.2-zip php8.2-bcmath -y
若需安装其他版本(如PHP 7.4),需先添加第三方仓库(如Ondřej Surý的PPA),再执行类似安装命令。
三、配置PHP核心参数
PHP配置文件分为命令行模式(cli)和Web服务器模式(fpm/apache2),路径为/etc/php/{版本号}/{模式}/php.ini。常用配置项及修改示例:
error_reporting = E_ALL & ~E_NOTICE & ~E_STRICT & ~E_DEPRECATED
display_errors = Off
log_errors = On
error_log = /var/log/php_errors.log # 指定错误日志路径
memory_limit = 256M # 脚本最大内存使用量
max_execution_time = 30 # 脚本最大执行时间(秒)
upload_max_filesize = 10M # 允许上传的单个文件最大大小
post_max_size = 12M # POST请求最大数据量(需大于upload_max_filesize)
date.timezone = "Asia/Shanghai" # 设置为中国上海时区
修改完成后,保存文件并重启PHP服务使配置生效。
四、配置PHP-FPM(可选,推荐用于Nginx)
若使用Nginx作为Web服务器,需通过PHP-FPM(FastCGI进程管理器)处理PHP请求。安装PHP时已自动安装PHP-FPM,需修改其池配置文件(/etc/php/{版本号}/fpm/pool.d/www.conf),调整与Web服务器的通信方式:
listen = /run/php/php8.2-fpm.sock # 使用Unix套接字(推荐,性能更高)
; listen = 127.0.0.1:9000 # 或使用TCP端口(若Nginx与PHP-FPM不在同一服务器)
listen.owner = www-data # 监听所有者(需与Web服务器用户一致)
listen.group = www-data # 监听组(需与Web服务器用户一致)
user = www-data # PHP-FPM运行用户
group = www-data # PHP-FPM运行组
pm = dynamic # 进程管理模式(动态调整进程数)
pm.max_children = 50 # 最大子进程数(根据服务器资源调整)
pm.start_servers = 5 # 启动时的子进程数
pm.min_spare_servers = 5 # 最小空闲子进程数
pm.max_spare_servers = 10 # 最大空闲子进程数
修改完成后,重启PHP-FPM服务:
sudo systemctl restart php8.2-fpm
五、配置Web服务器(Nginx/Apache)
编辑Nginx的默认站点配置文件(/etc/nginx/sites-available/default),添加PHP处理逻辑:
server {
listen 80;
server_name your_domain_or_ip; # 替换为域名或IP地址
root /var/www/html; # 网站根目录(默认)
index index.php index.html index.htm; # 默认索引文件
location / {
try_files $uri $uri/ =404; # 尝试访问文件,不存在则返回404
}
location ~ \.php$ { # 匹配所有.php结尾的请求
include snippets/fastcgi-php.conf; # 引入FastCGI配置(包含fastcgi_params等)
fastcgi_pass unix:/run/php/php8.2-fpm.sock; # 与PHP-FPM通信的套接字路径
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; # 设置脚本文件路径
include fastcgi_params; # 引入FastCGI通用参数
}
location ~ /\.ht { # 禁止访问.htaccess文件(Apache遗留配置)
deny all;
}
}
测试Nginx配置语法是否正确,无误后重启服务:
sudo nginx -t # 测试配置
sudo systemctl restart nginx # 重启Nginx
编辑Apache的默认站点配置文件(/etc/apache2/sites-available/000-default.conf),启用PHP模块并配置处理规则:
<VirtualHost *:80>
ServerAdmin webmaster@localhost
DocumentRoot /var/www/html
<Directory /var/www/html>
Options Indexes FollowSymLinks
AllowOverride All # 允许.htaccess文件覆盖配置(需开启rewrite等模块)
Require all granted # 允许所有用户访问
</Directory>
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
<FilesMatch \.php$> # 匹配所有.php结尾的请求
SetHandler "proxy:unix:/run/php/php8.2-fpm.sock|fcgi://localhost" # 通过Unix套接字转发到PHP-FPM
</FilesMatch>
</VirtualHost>
启用必要的Apache模块(如proxy_fcgi、setenvif),并重启服务:
sudo a2enmod proxy_fcgi setenvif # 启用模块
sudo systemctl restart apache2 # 重启Apache
六、测试PHP安装
在网站根目录(/var/www/html)创建info.php文件,内容如下:
<?php
phpinfo();
?>
保存后,在浏览器中访问http://your_domain_or_ip/info.php,若看到PHP详细信息页面(包括版本、配置项、加载的扩展等),则说明PHP配置成功。
七、安全加固(可选但重要)
info.php,避免泄露服务器信息:sudo rm /var/www/html/info.php
sudo ufw allow 'Nginx Full' # 若使用Nginx
sudo ufw allow 'Apache Full' # 若使用Apache
sudo ufw enable # 启用防火墙
sudo apt update && sudo apt upgrade -y