阿里云轻量服务器用应用镜像部署PHP存在版本不可控和配置不一致两大硬伤,必须从干净系统手动安装:先清除残留服务与配置,再用yum安装Apache+PHP并正确启用模块,严格遵循默认路径(/var/www/html)、SELinux策略及安全组+firewalld双防火墙配置。

阿里云轻量服务器用应用镜像(如 LAMP 或 WordPress)部署 PHP,看似省事,但实际会带来两个硬伤:一是环境版本不可控(比如默认 PHP 7.2 已停更),二是配置文件路径、服务名、用户权限与手动安装完全不同,后续调试和迁移极容易踩坑。真要搭“独立环境”,必须绕开应用镜像,从干净系统开始手动装。
确认轻量服务器系统并关闭预装服务
轻量服务器创建时若误选了“LAMP 应用镜像”,即使控制台显示“已更换为 CentOS”,底层仍残留 Apache、MySQL 进程和冲突的配置。必须先清掉:
- 登录后执行
ps aux | grep -E '(httpd|nginx|apache|mysql|mysqld)',查出所有残留进程 PID - 逐个 kill:
kill -9 <PID>;或直接停服务:systemctl stop httpd nginx mysqld - 禁用开机自启:
systemctl disable httpd nginx mysqld - 删掉预装配置目录(常见位置):
rm -rf /etc/httpd /etc/nginx /var/lib/mysql - 检查
/home/www/htdocs是否存在——这是轻量 LAMP 镜像的默认 Web 根目录,若保留,Apache 启动后会优先加载它,导致你后来配的/var/www/html不生效
用 yum 安装 Apache + PHP(CentOS/Alibaba Cloud Linux)
轻量服务器默认系统多为 CentOS Stream 或 Alibaba Cloud Linux,yum 是首选包管理器。别用 apt,那属于 Ubuntu/Debian 系列,强行混用会报错。
- 更新源并升级:
yum update -y(Alibaba Cloud Linux 可跳过,但 CentOS 建议执行) - 装 Apache:
yum install -y httpd,不是apache2 - 装 PHP 及常用扩展:
yum install -y php php-mysqlnd php-gd php-mbstring php-xml php-zip php-curl(注意是php-mysqlnd,不是php-mysql;后者在新版中已废弃) - PHP 模块启用靠
libphp,无需额外装libapache2-mod-php(那是 Debian 的包名) - 启动并设开机自启:
systemctl start httpd && systemctl enable httpd
验证 PHP 是否被 Apache 正确解析
很多用户卡在这步:浏览器访问 test.php 显示源码而非执行结果。根本原因不是 PHP 没装,而是 Apache 没加载 PHP 模块,或文件没放对位置。
立即学习“PHP免费学习笔记(深入)”;
- 确认 PHP 模块已加载:
httpd -M | grep php,应输出类似php7_module (shared);若无输出,说明模块未启用,需检查/etc/httpd/conf.modules.d/15-php.conf是否存在且未被注释 - Web 根目录必须是
/var/www/html(Apache 默认),不是轻量镜像惯用的/home/www/htdocs;否则需改/etc/httpd/conf/httpd.conf中的DocumentRoot和对应<Directory>块 - 新建测试文件:
echo "<?php phpinfo(); ?>" > /var/www/html/test.php - 确保 SELinux 不拦截:
setsebool -P httpd_can_network_connect 1(若开启 SELinux) - 防火墙放行 80 端口:
firewall-cmd --add-port=80/tcp --permanent && firewall-cmd --reload
安全组和文件权限这两个点最容易被忽略
轻量服务器控制台里的“防火墙”只是安全组规则,和系统内 firewalld 是两套机制。只开安全组不配 firewalld,或者只配 firewalld 不开安全组,都会导致 80 端口无法访问。
- 安全组必须在阿里云控制台手动添加入方向规则:协议类型 TCP,端口范围 80,授权对象
0.0.0.0/0(或按需限制 IP) - PHP 文件权限不能是 777:
/var/www/html目录属主应为root:apache,文件权限建议644,目录755;否则 Apache 可能因权限过高拒绝执行 -
phpinfo()测试完务必删掉:rm /var/www/html/test.php,否则暴露敏感配置



















