[2023-05-20更新]接手新项目,怎么跑起来?
2023-05-20 最新进展
经过不断的折腾与摸索,根据贴子中“grubby”同志的方法,把composer.lock删掉和vendor整个删掉
再composer install,就只有报了三个问题,都是php扩展问题。
其中2个扩展开启,剩下一个是插件hhxsv5/laravel-s依赖的多线程pcntl扩展,只有linux下才能安装,所以把这个插件先删掉,composer install 顺利安装,并且php artisan serve 顺利跑起来
但结果与我用apahce直接指定public为一个网站一样,都是一片空白,连报错都没有。
但走到这步也算是一大进展。
还需要继续折腾。
初始问题描述
接手了个php项目,没有交接。Laravel版本是6.20.44,首先目标是跑起来。
写过点原生php和thinkphp,没折腾过Laravel,于是看了下文章,可以用php命行跑内置的服务器,
于是试了下,报错:
报错的是这里:
syntax error, unexpected ‘|‘, expecting variable,百度了下说这个运算符8.0才支持
?于是换成php8, 报了另外一个错:
说getClass ()弃用了
老衲凌乱了,用7不支持|运算,用8却别的方法弃用,这怎么玩?
另1,我用apache直接指定public目录为一个网站,访问了也是一片空白,报错都没有
另2:我下载官网的Laravel 6.20.40 (LTS) 一键安装包下载, 用php8, php atisan serve可以跑起来
php artsion serve -vvv 可以追踪报错,看下哪些不是 vendor 目录中的。
我看 2.x 版本是有调用 getClass()。
api/Handler.php at v2 · dingo/api · GitHub
我看 dingo/api 3.x 4.x 没有使用 getClass,
方法1:
升级 dingo 到 3.x 或 4.x
方法2:
不升级应该也可以, 屏蔽报错就行
刚接触推荐用 2。
我猜想也可能是你使用 composer update 更新了包的版本导致的不兼容(如果composer.json里面版本要求的太宽泛)。因此如果生产环境项目可正常运行,我建议看看代码仓库中是否存在 composer.lock 文件,并使用 composer install 来执行包安装。
把前任喊回来,就说公司发金条了,把他的头摁键盘上让他跑
Laravel 6 的项目用 PHP 8 跑,过分了。
都知道是版本问题了,还不简单,就用之前的环境,不要update 之来个composer install不就好了
找一个可以快速切换版本的软件,比如phpstudy什么的,
切换一个环境删除一次vender,然后composer install,
从7.0一直往上试,一般7.2.x ,7.3.x比较多,中间的版本号大部分都是兼容的,
你这项目服务器上没有吗?不能看服务器版本?
小哥们我觉得你可以看看我的博客 :joy: 可能不太精准的适配每一个,但是这是比较通用的了 myblog.oneself.icu:10010/article/23
|符号那是指定了参数类型一般由ide生成的,直接去掉【string|\Stringable】也不影响。另外如果只是想跑起来,请按下面步骤检查下:
1、本地启动环境,建议直接用phpstudy,配置伪静态;
2、设置本地域名,指向public目录,用phpstudy->网站->创建网站;
3、导入sql,连接数据库;
4、到项目根目录下找到routes这个目录,看下路由配置,然后用域名 + 路由访问(若是admin或api路由,url需要带上admin或api);
报错不用担心就怕没有错误,备份一份代码,根据错误提示大胆改起来。
Laravel 6 不能用 PHP 8
Dingo 只能版本 2
切换到 PHP 7.4,删掉 vendor,然后安装 Dingo 2 看还有什么报错
有
composer.lock
嘛 ?php 版本太高了,先降低到 7.* 再说
composer 可以设置php版本,你先把vendor,composer.lock删除。
然后再安装试试
6.x的环境要求:
安装《Laravel 6 中文文档》
跟老板说 项目需要推到重来,这下舒服了