温馨提示×

centos php环境怎么配置

小樊
44
2025-12-09 12:13:25
栏目: 编程语言

CentOS PHP环境配置实操指南

一 环境准备与仓库

  • 更新系统并安装 EPEL 仓库,获得更多可用软件包:
    • 命令:sudo yum update -y
    • 命令:sudo yum install -y epel-release
  • 说明:后续通过 yum 安装 PHPPHP-FPM 及常用扩展(如 php-mysqlnd、php-gd、php-mbstring、php-curl、php-xml、php-bcmath、php-zip、php-opcache)。

二 两种常见部署方案

  • 方案A LAMP(Apache + PHP)
    • 安装组件:sudo yum install -y httpd php php-mysqlnd
    • 启动服务:sudo systemctl start httpd && sudo systemctl enable httpd
    • 说明:使用 mod_php 时,Apache 直接解析 PHP,无需额外配置 PHP-FPM。
  • 方案B LEMP(Nginx + PHP-FPM)
    • 安装组件:sudo yum install -y nginx php-fpm php-mysqlnd
    • 启动服务:sudo systemctl start nginx php-fpm && sudo systemctl enable nginx php-fpm
    • 说明:Nginx 通过 FastCGI 将 PHP 请求交给 PHP-FPM 处理。

三 PHP与PHP-FPM核心配置

  • 定位并调整主配置
    • 查看配置文件路径:php -i | grep "Loaded Configuration File"
    • 常用参数(编辑 /etc/php.ini):
      • memory_limit = 256M
      • upload_max_filesize = 20M
      • post_max_size = 20M
      • max_execution_time = 300
      • date.timezone = "Asia/Shanghai"
      • error_reporting = E_ALL & display_errors = Off(生产建议关闭显示)
  • PHP-FPM 进程与监听(编辑 /etc/php-fpm.d/www.conf
    • 示例(Unix Socket,性能更好,权限需与 Web 服务一致):
      • listen = /run/php-fpm/www.sock
      • listen.owner = nginx
      • listen.group = nginx
      • listen.mode = 0660
      • user = nginx
      • group = nginx
      • 进程管理(示例):pm = dynamicpm.max_children = 50pm.start_servers = 5pm.min_spare_servers = 5pm.max_spare_servers = 35
    • 示例(TCP 端口):listen = 127.0.0.1:9000
    • 使配置生效:sudo systemctl restart php-fpm
  • 性能与安全要点
    • 启用 OPcache(推荐):sudo yum install -y php-opcache,在 /etc/php.d/opcache.ini 中设置 opcache.enable=1 并重启 php-fpm
    • 禁用危险函数(在 php.ini):disable_functions = exec,system,shell_exec,passthru,proc_open,proc_close,eval,assert

四 Web服务器与PHP对接

  • Nginx 配置示例(/etc/nginx/conf.d/default.conf)
    • 片段:
      server {
          listen 80;
          server_name your_domain_or_ip;
          root /var/www/html;
          index index.php index.html;
      
          location / {
              try_files $uri $uri/ =404;
          }
      
          location ~ \.php$ {
              include        fastcgi_params;
              fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
              fastcgi_index  index.php;
              fastcgi_pass   unix:/run/php-fpm/www.sock;  # 或 127.0.0.1:9000
          }
      }
      
    • 使配置生效:sudo systemctl restart nginx
  • Apache 配置示例
    • 使用 mod_php(已安装 php 包即可):sudo systemctl restart httpd
    • 使用 PHP-FPM(启用代理模块并转发):
      <FilesMatch \.php$>
          SetHandler "proxy:fcgi://127.0.0.1:9000"
      </FilesMatch>
      
    • 使配置生效:sudo systemctl restart httpd

五 测试与常见问题

  • 功能测试
    • 创建测试文件:echo "<?php phpinfo();" | sudo tee /var/www/html/info.php
    • 浏览器访问:http://your_server_ip/info.php,出现 PHP 信息页即表示环境可用。
  • 常见问题排查
    • 502/504:检查 PHP-FPM 是否运行、监听地址与 Nginx/Apache 配置是否一致、Socket 文件权限是否为 0660 且属主/属组匹配 Web 服务。
    • 权限与目录:确保 /var/www/html 对 Web 服务用户(如 nginx)可读可执行。
    • SELinux:如启用,使用 sudo setsebool -P httpd_can_network_connect 1 允许与 PHP-FPM 通信;或按需配置端口类型:sudo semanage port -a -t http_port_t -p tcp 80(如未安装 semanage,先安装 policycoreutils-python-utils)。
    • 防火墙:开放 80/443sudo firewall-cmd --permanent --add-service=http --add-service=https && sudo firewall-cmd --reload
    • 配置热加载:修改 php.ini 后重启 php-fpm;修改 Nginx/Apache 后重启对应服务。

0