Apache 启动 PHP

举报
林欣 发表于 2025/09/12 13:52:46 2025/09/12
【摘要】 在 CentOS 7 的 httpd(Apache) 中启动 PHP 支持,需要正确配置 PHP-FPM 或 mod_php 模块。以下是详细步骤: 方法 1:使用 mod_php(传统方式,适用于 PHP 5.x/7.x) 1. 安装 PHP 和 Apache 模块yum install -y php php-mysqlnd php-gd php-mbstring php-xml php-...

CentOS 7httpd(Apache) 中启动 PHP 支持,需要正确配置 PHP-FPMmod_php 模块。以下是详细步骤:


方法 1:使用 mod_php(传统方式,适用于 PHP 5.x/7.x)

1. 安装 PHP 和 Apache 模块

yum install -y php php-mysqlnd php-gd php-mbstring php-xml php-json

说明

  • 此方式直接通过 libphp 模块运行 PHP,性能较低,但配置简单。

2. 重启 Apache

systemctl restart httpd

3. 测试 PHP

创建 /var/www/html/info.php

<?php phpinfo(); ?>

访问 http://your_server_ip/info.php,确认 PHP 信息页正常显示。


方法 2:使用 PHP-FPM(推荐,适用于 PHP 7.x/8.x)

PHP-FPM(FastCGI Process Manager)性能更好,适合生产环境。

1. 安装 PHP-FPM

1.1 安装 PHP 7.4(推荐)

yum install -y epel-release
yum install -y httpd php74 php74-php-fpm php74-php-mysqlnd php74-php-gd php74-php-mbstring

说明

  • 如果使用其他 PHP 版本(如 7.3/8.0),替换 php74php73php80

1.2 启动 PHP-FPM

systemctl start php74-php-fpm
systemctl enable php74-php-fpm

2. 配置 Apache 支持 PHP-FPM

2.1 修改 Apache 配置

编辑 /etc/httpd/conf.d/php.conf(或新建文件):

<FilesMatch \.php$>
    SetHandler "proxy:fcgi://127.0.0.1:9000"
</FilesMatch>

<IfModule proxy_module>
    ProxyTimeout 300
</IfModule>

说明

  • fcgi://127.0.0.1:9000 是 PHP-FPM 默认监听地址(可在 /etc/opt/remi/php74/php-fpm.d/www.conf 中修改)。

2.2 确保 mod_proxymod_proxy_fcgi 已启用

grep -E "proxy_module|proxy_fcgi_module" /etc/httpd/conf/httpd.conf

如果未启用,在 /etc/httpd/conf/httpd.conf 中取消注释:

LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_fcgi_module modules/mod_proxy_fcgi.so

3. 重启 Apache

systemctl restart httpd

4. 测试 PHP-FPM

访问 http://your_server_ip/info.php,确认 PHP 信息页正常显示,且 Server API 显示为 FPM/FastCGI


常见问题解决

1. PHP 页面无法解析(显示源码或 404)

  • 原因
    • Apache 未加载 PHP 模块(mod_phpmod_proxy_fcgi)。
    • PHP-FPM 未运行或监听地址错误。
  • 解决
    # 检查 PHP-FPM 是否运行
    systemctl status php74-php-fpm
    
    # 检查 Apache 模块
    httpd -M | grep -E "php|proxy"
    
    # 检查 PHP-FPM 监听地址
    grep "listen" /etc/opt/remi/php74/php-fpm.d/www.conf
    

2. 502 Bad Gateway

  • 原因
    • PHP-FPM 未运行或崩溃。
    • SELinux 阻止 Apache 访问 PHP-FPM。
  • 解决
    # 重启 PHP-FPM
    systemctl restart php74-php-fpm
    
    # 临时关闭 SELinux
    setenforce 0
    
    # 永久关闭 SELinux(不推荐生产环境)
    sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
    

3. PHP 版本冲突

  • 现象php -vphpinfo() 显示版本不一致。
  • 原因:系统安装了多个 PHP 版本。
  • 解决
    # 查看已安装的 PHP
    rpm -qa | grep php
    
    # 卸载冲突版本
    yum remove php-common php-cli
    
    # 确保使用 remi 仓库的 PHP
    yum-config-manager --enable remi-php74
    

总结

方法 适用场景 关键命令
mod_php 简单测试环境 yum install php + systemctl restart httpd
PHP-FPM 生产环境(推荐) yum install php74-php-fpm + 配置 proxy:fcgi

推荐生产环境使用 PHP-FPM,性能更好且支持进程隔离。如果遇到问题,优先检查:

  1. PHP-FPM 是否运行systemctl status php74-php-fpm)。
  2. Apache 配置是否正确/etc/httpd/conf.d/php.conf)。
  3. SELinux 是否阻止连接setenforce 0 测试)。
【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。