Apache 启动 PHP
【摘要】 在 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 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-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),替换
php74
为php73
或php80
。
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_proxy
和 mod_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_php
或mod_proxy_fcgi
)。 - PHP-FPM 未运行或监听地址错误。
- Apache 未加载 PHP 模块(
- 解决:
# 检查 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 -v
和phpinfo()
显示版本不一致。 - 原因:系统安装了多个 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,性能更好且支持进程隔离。如果遇到问题,优先检查:
- PHP-FPM 是否运行(
systemctl status php74-php-fpm
)。 - Apache 配置是否正确(
/etc/httpd/conf.d/php.conf
)。 - SELinux 是否阻止连接(
setenforce 0
测试)。
【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)