温馨提示×

Debian上PHP怎么配置

小樊
37
2025-12-28 17:26:15
栏目: 编程语言

Debian 上 PHP 配置全流程

一 准备与安装

  • 更新索引并确认可用版本:
    • sudo apt update
    • apt-cache policy php
  • 安装默认版本(以仓库为准,常见为 PHP 8.2):
    • sudo apt install php
  • 安装指定版本(示例:PHP 8.2PHP 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 是否限制(如启用需相应放行)。

0