文章摘要
从本地到宝塔面板的虚拟主机,那些报错信息不会直接告诉你的差异。
本地跑得好好的站点,传到虚拟主机上总会多出几个新问题。踩过的坑记在这里。
一、PHP 版本不一致
本地 8.2,主机默认可能还是 7.4。面板里能选版本,但切换后要给站点重载一次 PHP 进程,否则 php.ini 还是旧的。
二、路径大小写
macOS 文件系统不区分大小写,Linux 区分。require './db.php' 写成 DB.php 在本地毫无问题,上线直接 500。
三、SQLite 的写权限
数据库文件可写还不够,同目录也必须可写——SQLite 要创建 -journal 和 -wal 临时文件。只给文件加 666 是最常见的错误。
BASH
chmod 755 /www/wwwroot/blog
chmod 664 /www/wwwroot/blog/data/blog.db
chown www:www /www/wwwroot/blog/data四、伪静态规则
/article/123 这种路由依赖重写规则。面板里新建站点默认没有 .htaccess,需要自己加:
APACHE
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php [QSA,L]五、时区
date() 输出差 8 小时,是因为主机默认 UTC。在入口统一设置,别指望 php.ini 每个站点都改过:
PHP
date_default_timezone_set('Asia/Shanghai');六、上传限制
upload_max_filesize 和 post_max_size 要一起改,只改前者会静默截断请求,表现为"点了保存但什么都没发生"。
最省事的排查手段永远是看日志。面板的站点日志目录里,error.log 的最后 50 行通常直接写着原因。留言板0
昵称必填 · 邮箱仅用于生成头像
还没有留言,来坐第一排
1231231😭
第一条留言,测试<script>alert(1)</script>