源码建站程序传上去,域名一访问就白屏、500或者直接下载文件,这种事儿太常见了。别急着怀疑源码本身有问题,大多数时候是服务器环境没对上。先看浏览器给你什么反应,白屏和报错是两码事。白屏通常是PHP报错被屏蔽了,500多半是权限或语法问题,直接弹出下载框说明PHP没解析,文件被当静态资源了。打开浏览器开发者工具看Network,状态码是200但页面空白,和状态码500,排查方向完全不同。
先确认文件是不是传全了。很多人用FTP拖拽,断线重传后少几个文件自己都不知道。源码压缩包解压后文件数量对一下,尤其是vendor、runtime、public这些目录。Linux服务器区分大小写,源码里写的是Index.php,你传成index.php,在Windows上能跑,到Linux上直接404。上传时用二进制模式,别用ASCII,否则图片和压缩包全坏。传完最好在服务器上解压,比本地传上去稳。
接着看网站根目录指对了没有。现在很多源码入口文件在public目录下,你把整包丢到网站根目录,访问域名当然打不开。宝塔面板里网站目录要设置到public,别指向项目根。Apache和Nginx的配置不一样,Nginx要配伪静态,不然首页能开,点内页就404。伪静态规则源码包里一般有,找rewrite或者nginx.conf,复制到站点配置里。没配伪静态,ThinkPHP、Laravel这类框架基本跑不起来。
PHP版本是重灾区。源码说明写要求PHP7.4,服务器默认给你上了8.2,一访问就报错。老源码用each()、create_function()这些函数,PHP8直接移除,白屏没商量。反过来新源码要求8.1,你给7.4,语法不兼容也白屏。在宝塔里切换PHP版本试一下,两分钟的事。扩展也得看,fileinfo、gd、curl、openssl、mbstring、pdo_mysql这几个缺一个都可能出问题。安装完扩展记得重启PHP。
数据库连不上会直接报错,提示Access denied for user或者Unknown database。检查config目录下的数据库配置文件,用户名、密码、库名、端口对不对。本地开发用的root,线上数据库一般单独建用户,权限只给这个库。数据库版本也别忽略,MySQL5.7导出的sql放到8.0里,有些语法不兼容。导入时字符集选utf8mb4,不然中文乱码。表前缀和源码配置要一致,很多人忘了改。

文件权限不对也会打不开。Linux下目录一般755,文件644,runtime、cache、uploads这些要可写。用chown把属主改成www,别直接777,不安全还容易出问题。宝塔里一键设置权限就行,但注意别把整个项目设成777,有些程序会检测权限过宽直接报错。
域名解析和服务器绑定也要看。域名ping一下,解析到服务器IP没有。服务器上站点绑定的域名对不对,端口80和443安全组放行了没有。宝塔面板安全组和云服务器安全组是两层,很多人只开了面板没开云厂商的。SSL证书配了但强制HTTPS,源码里回调地址还是http,也会出问题。
还有个容易忽略的:默认首页没设。访问域名显示目录列表或者403,去站点配置里把index.php加到默认文档第一位。缓存和CDN也清一下,改完配置浏览器强刷,CDN那边刷新目录。最后看日志,宝塔的网站日志和PHP错误日志在/www/wwwlogs下,tail一下最新报错,比瞎猜快得多。程序上传后打不开,九成是环境、路径、权限、数据库这四类问题,顺着报错摸,基本都能解决。