网站打不开是最让人焦虑的一类问题,因为浏览器只给你一句「无法访问此网站」或者一片白屏,什么线索都不给。但实际上,从「域名解析」到「PHP 报错」,中间只有五个环节有可能断。按顺序走一遍,八成的问题你自己就能定位到。
先分清三种「打不开」
很多人一上来就重启服务器,这是错的。先看现象,因为不同现象指向完全不同的层级:
- 浏览器直接报错(
ERR_CONNECTION_TIMED_OUT、无法访问此网站)→ 问题在服务器之前:域名、DNS、端口、防火墙 - 返回一个有状态的错误页(
502、503、504、500、宝塔默认页)→ 服务器活着,问题在 Web 服务或 PHP - 页面一片空白,但状态码是 200 → PHP 执行到一半死了,错误被屏蔽了
先记住这个分叉,后面的排查效率会完全不一样。
排查顺序:从外到内,一层一层剥
1. 域名和 DNS
在本地命令行执行:
ping 你的域名
nslookup 你的域名看解析出来的 IP 是不是你服务器的 IP。不是的话,问题就到底了:域名过期、DNS 记录被改、CDN 回源配错,三种可能。国内服务器还要额外确认一件事——域名是否备案,未备案的域名指向国内机房,会被直接阻断,症状跟服务器挂了一样。
2. 端口通不通
telnet 你的域名 80
telnet 你的域名 443或者用在线端口检测工具。连不上就是三层问题:安全组没放行、服务器防火墙(firewalld / ufw)挡了、Web 服务没起来。
3. Web 服务是否在跑
systemctl status nginx
systemctl status php-fpm宝塔用户直接看面板首页的服务状态。如果 Nginx 在跑但网站 502,基本可以确定是 PHP-FPM 挂了或者进程数被打满。
4. 看错误日志,别猜
这一步是分水岭。不查日志的排查全靠运气,查了日志的基本都能定位。日志一般在这几个位置:
- Nginx:
/www/wwwlogs/你的域名.error.log(宝塔)或/var/log/nginx/error.log - PHP:
/www/server/php/版本/var/log/php-fpm.log - 程序自身:Typecho/WordPress 的调试日志、
usr/下如果有debug.log
看最后 50 行就够:
tail -n 50 /www/wwwlogs/example.com.error.log常见的几条信息,含义差别很大:
| 日志里的关键词 | 含义 | 方向 |
|---|---|---|
FastCGI sent in stderr: Primary script unknown | Nginx 找不到要执行的 PHP 文件 | 网站根目录配错了,或文件真丢了 |
Connection refused ... 127.0.0.1:9000 | PHP-FPM 没起来 | 启动 PHP-FPM,看是否启动即崩 |
upstream timed out | PHP 执行超时 | 某个插件/循环卡死,或数据库慢查询 |
No space left on device | 磁盘满了 | 日志、备份、缓存把盘撑爆了 |
Permission denied | 文件权限或所有者不对 | 目录 755 / 文件 644,所有者对齐 PHP 用户 |
Allowed memory size exhausted | PHP 内存不够 | 调 memory_limit,同时查是不是插件泄漏 |
5. 白屏但 200:把错误打开
白屏最坑的地方是错误被吞了。两种打开方式:
临时在入口文件顶部加:
ini_set('display_errors', 1);
ini_set('error_reporting', E_ALL);
error_reporting(E_ALL);或者改 PHP 配置:display_errors = On、log_errors = On。刷新页面,真正的报错就出来了。
Typecho 白屏最常见的三个原因:PHP 版本太低(1.2 要求 7.2+)、config.inc.php 数据库连不上、主题或插件里用了旧版不兼容的语法。WordPress 则是「内存耗尽」和「插件冲突」占大头——把 wp-content/plugins 目录临时改名,能进后台就说明是插件,再逐个开回来定位。
几个容易被误判的情况
只有我打不开,别人能打开
先怀疑本地:本地 DNS 缓存、运营商劫持、浏览器缓存、本机代理。换个网络(手机流量)试一次,症状消失就是本地问题,别去动服务器。
首页能开,其他页面全 404
这不是「网站坏了」,是伪静态没生效或者刚换过服务器。先用「 ugly 链接」验证一下:访问 你的域名/index.php/archives/1/,能开就是伪静态问题,不能开才是程序问题。这个判断顺序能省掉大量时间。
早上还好,晚上就挂了
典型的资源问题:访问量上来之后 PHP 进程打满、MySQL 连接数用尽、磁盘被日志写满。看 top 和 df -h 就有答案。这类问题不是「修一下就好」,而是要调整配置或加资源,硬扛只会反复挂。
突然跳转到奇怪的网站
这是被挂马了,不是配置问题。常见于使用了破解主题、过期插件、或者弱口令被爆破进后台。处理顺序是:先备份现场(别急着重装,数据可能还能救)、查最近修改过的文件、清理后门、改全部密码、升级程序和插件。只删首页的跳转代码是没用的,后门还在。
一张自查清单
- 域名解析对不对,是否备案
- 80/443 端口通不通,安全组和防火墙
- Nginx、PHP-FPM、MySQL 三个服务是否都在跑
- 磁盘有没有满,内存有没有耗尽
- 错误日志最后 50 行说了什么
- 白屏的话,把
display_errors打开看真实报错 - 页面 404 的话,先用
/index.php/形式验证伪静态 - 只有自己打不开,换网络再试一次
这八条走完还定位不到,才需要动代码。
什么时候该找人
如果你已经卡在「日志里看不出所以然」「改了一处又冒出新的错」「数据看着还在但站点就是起不来」这三种状态,继续自己试的代价通常比找人更高——因为每一次盲目修改都在破坏现场,让后面定位更难。
白屏修复、搬家、伪静态配置的范围和报价,写在 服务与报价 页。
本文由 admin 创作,采用 知识共享署名4.0 国际许可协议进行许可。
本站文章除注明转载/出处外,均为本站原创或翻译,转载前请务必署名。