我从2026.05.01开始,就决定要做一个博客,后面我用Laravel 13写好后,决定部署到宝塔面板上,踩了不少坑,于是写了这篇文章。
注释:如若代码有异步相关的代码,本教程可能覆盖不全。
本身这个步骤应该是不存在的。
但是不同的系统会影响php的版本安装,可能有各种方式去安装,但是作为一个小白,我选择换系统。
原本我是CentOS 7 系统的,我用宝塔安装PHP8.4的时候,提示:当前系统不支持安装PHP8.1+,请换系统后再试。
我又安装了Ubuntu 26版本,然后确实可以安装PHP8.4了,但是我在迁移其他的网站的时候,安装PHP7.4的时候,又提示:当前系统不支持安装PHP8.1以下版本,请换系统后再试。
。。。。。。
各位视情况而定吧,可能其他版本可以都安装,但是我没有一一尝试了。
这个很简单,去官网bt.cn看教程就行了。
我选择的是稳定版v10,主要是没广告。
然后选择LNMP组合,即Linux 、 Nginx 、 MySQL 、 PHP组合。
再去软件商店安装PHP8.4+的版本,phpmyadmin视情况安装吧。
此时来到最坑的地方了:
直接放PHP中文网的原文:
PHP 8.4 中 session_start() 失败主因是 session.save_path 不可写或未配置,且 session_set_cookie_params() 需显式传全参数,否则报错;输出提前、BOM、Redis/Memcached 配置错误也会导致会话失效。
session_start() 报 Warning: session_start(): Failed to read session data
PHP 8.4 默认启用了更严格的会话存储校验,
session_start()失败往往不是代码问题,而是底层存储路径不可写或session.save_path未显式配置。PHP 8.4 不再容忍session.save_path为空或指向不存在/无权限目录的情况,会直接中断并报错。
- 检查
session.save_path是否在php.ini中被注释或留空:运行php -i | grep session.save_path确认实际值
为了保证session可用,需要编辑php.ini,搜索save_path,找到;session.save_path = "/tmp",把;删掉。
并且确保/tmp目录的权限可用(虽然默认都可以,但是如果实在不行还是检查一下吧)
我的Laravel项目并没有队列等异步代码,所以这里没有设计如何配置worker。
npm run build命令,这时会自动生成构建文件在/public/build/目录下。/public/hot文件,一定要删除这个文件,否则blade模板中的@vite代码会误以为你仍在开发环境,访问127.0.0.1而不是你的url去获取资源文件。/public。laravel 5就行。或者可以复制下面的:location / {
try_files $uri $uri/ /index.php?$query_string;
}
Let's Entry又不要钱对吧,如果部署了就建议打开强制HTTPS。.env的修改环节。你需要修改以下的内容:
APP_ENV,把它改成productionAPP_KEY,我建议是清空,然后去网站根目录,运行php artisan key:generate命令去重新生成一个。APP_DEBUG,把它改成false,要不然什么错误都往前端显示,那黑客可老爱了。APP_URL,这个很好理解吧?把他改成你的url地址,注意http还是https。SESSION_DOMAIN,这个选项一定要改,因为不改的话,session给前端发的domain信息就是错的,导致session不生效!,格式一般是.一级域名.后缀 如果你标标准准的写了迁移文件,可以运行:php artisan migrate迁移就行。
如果你是手写数据库老鸟,就是喜欢自己写数据库开发,你直接把你sql文件导入就行了。
(一般来说,你想我一样安装了ubuntu26的话,无法安装php8.1以下的版本,这个时候你的phpmyadmin一般也用不了)
/storage、/bootstarp权限,755权限,所属者默认www就行。很多人以为上面的步骤都搞完了就可以上线了,其实是不对的。
其实你试过之后就会发现,“好像这个.env修改了没有效果啊?”
这是肯定的,这是一个坑。当你直接用nginx等,控制访问,就会有一个“缓存”的东西开始工作。
想想本地开发是怎么跑的,应该没人不是这样的吧?应该都是php artisan serve启动的,这个时候默认缓存是不生效的。
所以你需要去根目录下运行这几个命令:
# 1. 清理所有旧缓存(综合清理)
php artisan optimize:clear
# 2. 单独清理配置缓存
php artisan config:clear
# 3. 单独清理路由缓存
php artisan route:clear
# 4. 单独清理视图缓存
php artisan view:clear
# 5. 清理事件缓存
php artisan event:clear
# 6. 清理编译过的类文件
php artisan clear-compiled
# 7. 重新生成配置缓存(优化性能)
php artisan config:cache
# 8. 重新生成路由缓存(优化性能)
php artisan route:cache
# 9. 重新生成视图缓存(优化性能)
php artisan view:cache
# 10. 重新生成事件缓存(优化性能)
php artisan event:cache
# 11. 重新生成优化缓存(完整优化,包含所有组件)
php artisan optimize
不仅上线的时候要运行上面的一堆指令,哪怕你修改了一点点代码,都需要重新跑一遍对应的指令,要不然不生效。
除非你是大头你就选择php artisan serve然后套一个反向代理。
这个时候就全部结束了,可以尽情访问你的web网站了。
npm run build啊?:把你的/public/hot文件删掉。