一、更新系统包列表在Debian上安装PHP前,需确保系统包列表为最新状态,避免因包版本冲突导致安装失败。执行以下命令更新列表:

sudo apt updatesudo 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_DEPRECATEDdisplay_errors = Offlog_errors = Onerror_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@localhostDocumentRoot /var/www/html<Directory /var/www/html>Options Indexes FollowSymLinksAllowOverride All# 允许.htaccess文件覆盖配置(需开启rewrite等模块)Require all granted# 允许所有用户访问</Directory>ErrorLog ${APACHE_LOG_DIR}/error.logCustomLog ${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文件,内容如下:
<?phpphpinfo();?>保存后,在浏览器中访问http://your_domain_or_ip/info.php,若看到PHP详细信息页面(包括版本、配置项、加载的扩展等),则说明PHP配置成功。
七、安全加固(可选但重要)
info.php,避免泄露服务器信息:sudo rm /var/www/html/info.phpsudo ufw allow 'Nginx Full'# 若使用Nginxsudo ufw allow 'Apache Full'# 若使用Apachesudo ufw enable# 启用防火墙sudo apt update && sudo apt upgrade -y