在 CentOS 7 系统中,PHP 并非作为一个独立的服务直接运行,而是依赖于 Web 服务器(如 Apache 或 Nginx)来处理请求。“启动 PHP” 实际上指的是启动并配置与 PHP 协同工作的 Web 服务器服务,本文将详细介绍在 CentOS 7 中通过两种主流方式启动和管理 PHP 服务的完整流程。
准备工作:确保 PHP 已安装
在启动服务之前,首要任务是确认 PHP 及其相关扩展已经正确安装在您的系统上,您可以通过以下命令来安装 PHP 及常用的模块,如果您已经安装,可以跳过此步骤。
sudo yum install epel-release sudo yum install php php-mysql php-fpm php-gd php-xml php-mbstring
安装完成后,您可以使用 php -v
命令来验证 PHP 是否安装成功及其版本信息。
通过 Apache (httpd) 服务启动 PHP
这是最传统和集成度最高的方式,PHP 作为 Apache 的一个模块(mod_php
)运行,当 Apache 启动时,PHP 处理器也随之加载。
安装 Apache 服务
如果系统中尚未安装 Apache,可以使用以下命令进行安装:
sudo yum install httpd
启动并设置 Apache 开机自启
安装完成后,使用 systemctl
命令来管理 Apache 服务。
# 启动 Apache 服务 sudo systemctl start httpd # 设置 Apache 服务开机自启 sudo systemctl enable httpd
验证服务状态
为了确保 Apache(以及 PHP 模块)正在运行,可以检查其状态:
sudo systemctl status httpd
如果输出中显示 active (running)
,则表示服务已成功启动。
测试 PHP 是否工作
在 Apache 的默认网站根目录(/var/www/html/
)下创建一个名为 info.php
的测试文件。
sudo vi /var/www/html/info.php
在文件中输入以下内容:
<?php phpinfo(); ?>
保存并退出后,在浏览器中访问 http://您的服务器IP地址/info.php
,如果看到详细的 PHP 配置信息页面,则说明 PHP 已通过 Apache 成功启动并运行。
通过 Nginx 与 PHP-FPM 启动 PHP
这是一种更现代、性能更高的架构,Nginx 作为前端 Web 服务器处理静态文件和反向代理,而 PHP-FPM(FastCGI Process Manager)作为一个独立的服务来处理 PHP 脚本。
安装 Nginx 和 PHP-FPM
sudo yum install nginx php-fpm
配置 PHP-FPM
PHP-FPM 的主配置文件位于 /etc/php-fpm.d/www.conf
,默认配置即可满足基本需求,但您可以检查 user
和 group
是否与 Nginx 运行用户(通常是 nginx
)一致,以确保权限正确。
启动并设置服务开机自启
在这种模式下,您需要分别启动 Nginx 和 PHP-FPM 两个服务。
# 启动 PHP-FPM 服务 sudo systemctl start php-fpm sudo systemctl enable php-fpm # 启动 Nginx 服务 sudo systemctl start nginx sudo systemctl enable nginx
配置 Nginx 以支持 PHP
编辑 Nginx 的配置文件(/etc/nginx/nginx.conf
或 /etc/nginx/conf.d/default.conf
),确保 server
块中包含处理 PHP 请求的 location
配置。
server { ... location ~ .php$ { root /usr/share/nginx/html; fastcgi_pass 127.0.0.1:9000; # 或 unix:/var/run/php-fpm/php-fpm.sock; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } ... }
修改配置后,使用 sudo nginx -t
测试配置文件语法是否正确,然后重载 Nginx 配置:
sudo systemctl reload nginx
测试 PHP 是否工作
在 Nginx 的默认网站根目录(/usr/share/nginx/html/
)下创建 info.php
文件,内容与方式一相同,然后在浏览器中访问 http://您的服务器IP地址/info.php
进行验证。
常用服务管理命令汇总
为了方便日常管理,下表汇总了 systemctl
常用的命令:
操作 | Apache (httpd) 命令 | PHP-FPM 命令 |
---|---|---|
启动服务 | sudo systemctl start httpd | sudo systemctl start php-fpm |
停止服务 | sudo systemctl stop httpd | sudo systemctl stop php-fpm |
重启服务 | sudo systemctl restart httpd | sudo systemctl restart php-fpm |
重载配置 | sudo systemctl reload httpd | sudo systemctl reload php-fpm |
查看状态 | sudo systemctl status httpd | sudo systemctl status php-fpm |
开机自启 | sudo systemctl enable httpd | sudo systemctl enable php-fpm |
禁用自启 | sudo systemctl disable httpd | sudo systemctl disable php-fpm |
故障排查与常见问题
PHP 页面无法正常显示,可以从以下几个方面进行排查:
- 防火墙设置:确保防火墙允许 HTTP(80 端口)和 HTTPS(443 端口)流量。
sudo firewall-cmd --permanent --add-service=http sudo firewall-cmd --permanent --add-service=https sudo firewall-cmd --reload
- SELinux 状态:SELinux 可能会阻止服务访问文件,可以临时关闭它进行测试(
sudo setenforce 0
),如果问题解决,则需要正确配置 SELinux 策略。 - 日志文件:检查 Web 服务器和 PHP-FPM 的错误日志,它们通常位于
/var/log/httpd/
、/var/log/nginx/
和/var/log/php-fpm/
目录下。
相关问答 (FAQs)
问题1:启动服务后,访问 PHP 页面只显示源代码或出现 404 Not Found 错误,怎么办?
解答: 这个问题通常发生在 Nginx + PHP-FPM 环境中,请确认 PHP-FPM 服务确实在运行(sudo systemctl status php-fpm
),检查 Nginx 配置文件中的 location ~ .php$
部分,确保 fastcgi_pass
指令指向了正确的 PHP-FPM 监听地址(如 0.0.1:9000
)SCRIPT_FILENAME
变量设置正确,对于 Apache,这通常意味着 mod_php
模块没有被正确加载,可以检查 /etc/httpd/conf.modules.d/10-php.conf
文件是否存在。
问题2:我修改了 php.ini
配置文件(例如修改了上传文件大小限制),为什么刷新页面后没有生效?
解答: PHP 的配置是在其对应的服务启动时加载到内存中的,对 php.ini
文件(通常位于 /etc/php.ini
)的任何修改,都需要重启相应的服务才能生效,如果您使用的是 Apache,请执行 sudo systemctl restart httpd
,如果您使用的是 Nginx + PHP-FPM,您只需要重启 PHP-FPM 服务即可,sudo systemctl restart php-fpm
,重启后,新的配置就会被应用。
【版权声明】:本站所有内容均来自网络,若无意侵犯到您的权利,请及时与我们联系将尽快删除相关内容!
发表回复