Debian上PHP怎么配置
小樊
37
2025-12-28 17:26:15
Debian 上 PHP 配置全流程
一 准备与安装
- 更新索引并确认可用版本:
- sudo apt update
- apt-cache policy php
- 安装默认版本(以仓库为准,常见为 PHP 8.2):
- 安装指定版本(示例:PHP 8.2 或 PHP 7.4):
- sudo apt install php8.2
- sudo apt install php7.4
- 安装常用扩展(与所选版本保持一致,例如 php8.2-fpm、php8.2-mysql):
- sudo apt install php-cli php-fpm php-json php-common php-mysql php-zip php-gd php-mbstring php-curl php-xml php-pear php-bcmath
- 说明:Debian 的打包方式会自动启用扩展,通常无需在 php.ini 中手动添加 “extension=xxx.so”。
二 配置文件位置与生效方式
- 配置文件按 SAPI 与版本区分,典型路径:
- CLI:/etc/php/{版本}/cli/php.ini
- FPM:/etc/php/{版本}/fpm/php.ini
- Apache 模块:/etc/php/{版本}/apache2/php.ini
- 快速定位已加载配置:
- php --ini(查看 CLI 的 php.ini 路径)
- 在 Web 环境中创建 phpinfo.php 查看 Loaded Configuration File
- 使配置生效:
- CLI:新开终端会话即可
- FPM:sudo systemctl restart php**{版本}**-fpm
- Apache:sudo systemctl restart apache2。
三 核心参数建议
- 安全与解析:
- cgi.fix_pathinfo=0(在 FPM 的 php.ini 中,防止路径遍历解析漏洞)
- 错误与日志(区分环境):
- 开发:display_errors=On;error_reporting=E_ALL
- 生产:display_errors=Off;log_errors=On;error_log=/var/log/php_errors.log
- 资源限制(按业务调整):
- memory_limit=256M
- max_execution_time=300
- upload_max_filesize=100M
- post_max_size=100M(需 ≥ upload_max_filesize)
- 时区:
- date.timezone=“Asia/Shanghai”
- 性能优化(OPcache,Debian 包通常默认启用,建议核对):
- opcache.enable=1
- opcache.memory_consumption=128
- opcache.max_accelerated_files=10000。
四 与 Web 服务器整合
- Nginx + PHP-FPM(推荐)
- FPM 池配置(/etc/php/{版本}/fpm/pool.d/www.conf):
- listen=/run/php/php{版本}-fpm.sock(性能优于 TCP)
- listen.owner=www-data;listen.group=www-data
- user=www-data;group=www-data
- pm=dynamic;pm.max_children=50;pm.start_servers=5;pm.min_spare_servers=5;pm.max_spare_servers=35
- 站点配置(/etc/nginx/sites-available/default 片段):
- location ~ .php$ {
- include snippets/fastcgi-php.conf;
- fastcgi_pass unix:/run/php/php**{版本}**-fpm.sock;
- fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
- include fastcgi_params;
}
- 检查并重载:sudo nginx -t && sudo systemctl reload nginx
- 启动与开机自启 FPM:sudo systemctl start php**{版本}-fpm && sudo systemctl enable php{版本}**-fpm
- Apache + PHP(模块方式)
- 安装模块:sudo apt install libapache2-mod-php
- 启用对应版本模块:sudo a2enmod php**{版本}**
- 重要安全项:编辑 /etc/php/{版本}/apache2/php.ini,将 cgi.fix_pathinfo=1 改为 0
- 重启:sudo systemctl restart apache2。
五 验证与常见问题
- 验证安装:
- echo “” | sudo tee /var/www/html/info.php
- 浏览器访问:http://服务器IP/info.php
- 测试完成后删除:rm /var/www/html/info.php(避免信息泄露)
- 常见问题排查:
- .php 显示源码或下载:未正确接入 PHP 处理器
- Apache:确认已安装 libapache2-mod-php 且启用对应模块(a2enmod phpX.X),检查是否将 .php 交给 PHP 处理,重启 Apache 并查看日志 /var/log/apache2/error.log
- Nginx:核对 fastcgi_pass 指向正确的 .sock 或 127.0.0.1:9000,并确保 SCRIPT_FILENAME 正确;执行 nginx -t 检查语法并重载
- 扩展未生效:确认扩展包与 PHP 版本一致(如 php8.2-mysql),并重启 Web 服务或 FPM
- FPM 无法连接:核对 /run/php/php**{版本}**-fpm.sock 权限与属主、Nginx/Apache 配置路径一致性,以及 SELinux/AppArmor 是否限制(如启用需相应放行)。