Windows 用户真机运行 laraBBS 源码 L03_5.8 可能会碰到的问题及解决方法

⚪ 解决源码包下载不了的问题
尽管github.com可以打开,但是ssh源码包却难以克隆。于是改用码云账号fork如下仓库后刷新,才顺利克隆到本地
gitee.com/open-resource/larabbs

⚪ composer install报错
Windows用户请使用如下命令安装依赖包
composer install --ignore-platform-reqs
或者像下图这样修改 composer.json 文件,添加一个 platform: {…} 的配置项。这个方法因为要修改代码,显然比上面的命令行要麻烦得多。
Windows 用户真机运行 laraBBS 源码 L03_5.8 可能会碰到的问题及解决方法

⚪ 数据库迁移报错Syntax error or access violation: 1071 Specified key was too long; max key length is 767 bytes
修改App\Providers\ AppServiceProvider.php文件,boot函数里面增加如下代码

use Illuminate\Support\Facades\Schema;
class AppServiceProvider extends ServiceProvider
{
    public function boot()
    {
        //解决数据迁移的问题
        Schema::defaultStringLength(191); 
        ...
    }
    ...
}

⚪ Unable to boot ApiServiceProvider, configure an API domain or prefix.
配置.env文件
API_PREFIX=api

⚪ No application encryption key has been specified.
终端执行如下命令即可解决
php artisan key:generate

⚪ No hint path defined for [sudosu].
修改config\sudosu.php文件,数组里面增加当前项目正在使用的域名后缀。因为我使用的是 w.bbs.cn 所以数组里面添加了 cn(更好的办法是使用 .test 做测试项目的顶级域名,这样就无需修改代码了)

return [
    // 允许使用的顶级域名
    'allowed_tlds' => ['dev', 'local', 'test', 'cn'], 
    ...
];

⚪ 页面暂无数据
执行如下命令
php artisan migrate --seed

⚪ 页面头像显示不出来
修改datebase\seeds\UsersTableSeeder.php,将$avatars = […]里面的无效链接替换成可以正常显示的图片链接,之后回滚数据库,再重新迁移同时填充假数据

php artisan migrate:rollback
php artisan migrate --seed

Windows 用户真机运行laraBBS 源码包可能会碰到的问题及解决方法
⚪ 点击任意一个用户头像,发现vendor\predis\predis\src\Connection\AbstractConnection.php报错,且页面有乱码,甚至于搜狗浏览器连论坛主页都打不开。无论是回滚数据库还是回退版本,错误仍在。
解决方法:启动Win版Redis服务
Windows 用户真机运行laraBBS 源码包可能会碰到的问题及解决方法
⚪ windows 安装 redis 方法
访问 microsoftarchive / redis 下载安装程序即可安装,之后进入 redis-server.exe 所在的目录执行命令redis-server --service-install redis.windows-service.conf --loglevel verbose即可,这条命令会设置 redis 服务开机启动并且不显示cmd窗口。关于redis的更多命令可以阅读文档《Windows Service Documentation.docx》
Windows 用户真机运行 laraBBS 源码 L03_5.8 可能会碰到的问题及解决方法
⚪ Please make sure the PHP Redis extension is installed and enabled.
明明已经启动 redis 服务了,仍然提示PHP的Redis扩展没有安装。解决方法很简单,修改 .env 文件,添加一行配置项 REDIS_CLIENT=predis 如下图所示
Windows 用户真机运行 laraBBS 源码 L03_5.8 可能会碰到的问题及解决方法
⚪ Non-static method Redis::hSet() cannot be called statically
这个是由 Redis 命名空间冲突造成的,这里使用 predis 而不是 php redis 扩展包。解决方法就是关闭 php 的 redis 扩展,这比修改项目代码的 use 语句更方便。
下图展示的是在 phpStudy 中关闭 redis 的方法,去掉对勾即可。效果等同于直接删除 php.ini 文件中的配置项extension=redis
Windows 用户真机运行 laraBBS 源码 L03_5.8 可能会碰到的问题及解决方法

⚪ postman测试接口报错,或者直接在浏览器的地址栏里敲入网址w.bbs.cn/api/topics 并回车,页面报错{“message”:”array_combine(): Both parameters should have an equal number of elements”,”status_code”:500}
解决方法很奇怪,修改.env文件,删除下面这行版本号即可
API_VERSION=
Windows 用户真机运行laraBBS 源码包可能会碰到的问题及解决方法
⚪ 测试接口还是报错?直接输入网址w.bbs.cn/api/topics 页面报错{“message”:”404 Not Found”,”status_code”:404}
如果主页可以正常打开,但是调用api接口却报404错误,这可能是因为没有配置api前缀导致的。解决方法仍然是修改.env文件,去掉api的域名配置项,改用前缀配置

# API_DOMAIN=http://w.bbs.cn
API_PREFIX=api
# API_VERSION=

⚪ 测试接口仍然报错,页面不存在
在url里面加个版本号v1试试,以我的测试用的域名 w.bbs.cn 为例就是下面这样:
不要访问 w.bbs.cn/api/topics
改成这个 w.bbs.cn/api/v1/topics 再试
⚪ 点击“管理后台”或者直接输入网址w.bbs.cn/admin 页面报错SQLSTATE[42000]: Syntax error or access violation: 1055 ‘larabbs.topics.title’ isn’t in GROUP BY…
修改config\database.php文件,将'strict' => true改为'strict' => false
⚪ tinker测试oauth报错 ‘cURL error 60: SSL certificate problem: unable to get local issuer certificate (see curl.haxx.se/libcurl/c/libcurl-err...)’
下载文件cacert.pem,之后修改php.ini引入此文件,重启服务器。

[curl]
; A default value for the CURLOPT_CAINFO option. This is required to be an
; absolute path.
curl.cainfo = path\to\cacert.pem
本作品采用《CC 协议》,转载必须注明作者和本文链接
《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!
未填写
文章
63
粉丝
17
喜欢
140
收藏
118
排名:132
访问:7.4 万
私信
所有博文
社区赞助商