156行bug与解决方法第三版(连载中)

不知不觉都第三版了,技术在更新,人又哪有歇脚的时间啊。

1:1052 - Column 'account_id' in field list is ambiguous
问题原因:使用查询语句left join报错
解决方法:数据库查询select上面没有用别名+字段,而刚好又遇到了重复的字段,导致冲突。在查询中字段前加上别名。

2:fatal: The upstream branch of your current branch does not match the name of your current branch.  To push to the upstream branch on the remote, use
问题原因:git push时报错,描述里说我使用了和远程分支一样的命名
解决方法: git push后面加上origin 和分支名后push成功

3:message:[A non well formed numeric value encountered]、
问题原因:不是一个数值型值域,类型测试下。
解决方法:打印日志,看看传的值。

4:Your configuration specifies to merge with the ref 'refs/heads/feature/task_it'
from the remote, but no such ref was fetched.
问题原因:分支pull时报错
解决方法:远程分支已经删除,使用git remote prune origin可以删除本地还存在,远程已删除的分支

5:2003-Cant't connect MySQL server on ''(10060 "Unknown error")
问题原因:数据库配置ssh验证时报错
解决方法:弄清楚Navicat的新建连接之常规方式和SSH的区别,这其实是一个东西,前面要配置,后面也要配置。ssh只是加锁了,而不是说不用输入账号和密码了。因为MySQL要通过不同账号密码配置权限。

6:Class 'EasyWechat\\Factory' not found
问题原因:Lumen引入EasyWechat报错
解决方法:某个地方改错了,我是直接丢弃了本地的修改,重新拉取,就不报错了。

7:"msg":"Credential \"component_verify_ticket\" does not exist in cache.","code":500,"debug"
问题原因:使用微信公众平台开发时报错
解决方法:这个是因为公众平台没有在授权列表里,在后台增加。

8:Object of class App\\Repositories\\AccountWeixinRepository could not be converted to string
问题原因:实例化对象给属性赋值时报错
解决方法:赋值时不用$号。

9:package format error, error nationcode
问题原因:调用短信接口时报错
解决方法:配置参数不正确,写死后正常

10:Argument 1 passed to Tymon\\JWTAuth\\JWTGuard::login() must be an instance of Tymon\\JWTAuth\\Contracts\\JWTSubject, instance of App\\Models\\User given
问题原因:调用laravel验证接口 报错
解决方法:所使用的Model没有实现两个接口导致的,AuthenticatableContract, JWTSubject在model定义加上就ok了。

11:Argument 2 passed to Lcobucci\\JWT\\Signer\\Hmac::createHash() must be an instance of Lcobucci\\JWT\\Signer\\Key, null given, called in 
问题原因:登录报错
解决方法:使用JWT认证要在.env中加上这个配置JWT_SECRET=gTQzVKmLJbFm1h7Sy5YlzQaptd2aC2Ng。找不到就会报错。

12:Please use App\\Services\\Wechat\\MessageService:singleton Initialization object
问题原因:new对象时报错
解决方法:这个是继承的父类中自定义的报错。

12:Failed loading D:\phpstudy\PHPTutorial\php\php-7.1.13-nts\ext\php_xdebug-2.7.0beta1-7.1-vc14-nts-x86_64.dll
问题原因:加载xdebug时报错,检测方法,命令行执行php -ini可以检查配置文件的正确性
解决方法:解决方法,是应为我使用了32位版本的php加载了64位的xdebug。重新下载后,正常显示。

13:Static route "/wechat/test" is shadowed by previously defined variable route "/wechat/([^/]+)" for method "GET"
问题原因:index方法不能使用这个,而且{id}这个路由要放到最后面,不然会提前执行
解决方法:把route里面的{id}下移

14:Request access_token fail: {"errcode":61023,"errmsg":"refresh_token is invalid hint: [MPY9HA0093hb97]"}
问题原因:微信登录报错。
解决方法:refresh Token30天过期,需要再次授权。

15:errcode\":61004,\"errms,access clientip is not registered hint: [vxmN302902974] requestIP: 139.199.98.104\
问题原因:IP没有加到允许的列表。
解决方法:在公众平台后台配置允许的IP。

16:"errcode":61003,"errmsg":"component is not authorized by this account"}
问题原因:请求微信临时二维码接口时报错
解决方法:后台配置绑定公众号。

17:The Response content must be a string or object implementing __toString()
问题原因:使用lumen 执行redirect时报错。
解决方法:配置文件写的有问题,写了个数组。

18:apache2/conf/httpd.conf: Cannot load /usr/local/apache2/modules/libphp7.so into server: /usr/local/apache2/modules/libphp7.so: undefined symbol: ap_unixd_config
问题原因:编译php配合apache时报错。最后的报错也可能是undefined symbol: unixd_config,版本过低的意思
解决方法:这是Apache给的官方说明: Try to update your Apache to 2.4 if you need to use the newer PHP version, otherwise downgrade your PHP version to the previous one.。如果要安装高版本的php,就用2.4以上,低版本的就2.4以下。这个高低,我个人觉得以稳定的php5.3为限

19:a client request body is buffered to a temporary file

20:3119133 recv() failed (104: Connection reset by peer) while reading response header from upstream
问题原因:和19一样,都是上传文件过大造成的
解决方法:  处理图片文件时内存耗尽。释放无用的内存,杀死闲置的进程。

21:413 Request Entity Too Large
问题原因:nginx报错
解决方法:client_max_body_size 50m;在http中加入这一行配置后正常

22:"Class 'ZipArchive' not found"
问题原因:使用PHPExcel时突然无法下载了
解决方法:是框架的问题,重启下easyswoole,框架初始化时扩展没有加载进去。如果PHP -m 发现扩展里面没有zip的话,就是缺少扩展。

23:WARNING: unrecognized options: --with-pdo-odbc
问题原因:安装ODBC扩展时,./configure时报错
解决方法:版本问题,终止了。

24: fatal: The upstream branch of your current branch does not match
the name of your current branch.  To push to the upstream branch
on the remote, use
问题原因:使用git push时,报错,并建议我使用git push origin HEAD:master(我已经执行了git branch --set-upstream-to并且在创建分支时就进行了关联)git pull不会报错。
解决方法:一般使用上面命令都可以,但是出现的实际原因是远程分支只有一个,新建一个远程的develop分支后正常。

24:letsencrypt 证书手动续期成功,浏览器却还是显示不安全
问题原因:使用了免费的https证书,手动续期时,发现证书没有实时更新
解决方法:这个是因为我将证书挪到了nginx的目录里,所以nginx还是使用的没有过期的证书,解决方法为配置nginx证书为证书默认生成目录,或者,将新生成的证书挪到自己的nginx目录里。重启服务。


25:The request is missing a required parameter, includes an invalid parameter value, includes a parameter more than once, or is otherwise malformed
问题原因:问题在于我使用Oauth的时候,自己把传的值修改了,把username改成了email导致获取不到其中的值报错
解决方法:username,password,grant_type,client_id,client_secret,scope这些值检查下都有没有,不要自己改名字。

26:oauth-private.key" does not exist
问题原因:部署laravel项目时报错
解决方法:执行php artisan passport:install 

27:No application encryption key has been specified
问题原因:部署laravel项目时报错,缺少app key
解决方法:php artisan key:generate

28:failed (123: The filename, directory name, or volume label syntax is incorrect
问题原因:配置项目时报错
解决方法:repeace \ to / as dictionary spliter,把nginx的项目目录配置文件从反斜杠改成正斜杠,apache also

29:local.ERROR: Key path oauth-private.key" does not exist or is not readable
问题原因:配置项目时报错
解决方法:php artisan passport:keys

30:The authorization grant type is not supported by the authorization server
问题原因:配置项目时报错
解决方法:更改 .env 文件中的 OAUTH_GRANT_TYPE=password OAUTH_SCOPE=* OAUTH_CLIENT_ID和OAUTH_CLIENT_SECRET为自己生成的id和secret

31:Object of class DateTime could not be converted to string
问题原因:把laravel执行的sql写入文件时报错
解决方案:query方法里的binding有时候不是字符串,而是实现了DateTime的对象,这个时候要把它进行特殊处理 if ($binding instanceof \DateTime) { $bindings[$i] = $binding->format('\'Y-m-d H:i:s\'');

32:Column 'COMMENT' in where clause is ambiguous
问题原因:执行Sql时报错
解决方法:when join tables,please make clear to your column belong to what table.like write your sql as "join a where a.name =123'  and don`t write it like 'join a where name =123' ,缺少表名前缀,导致连表时字段找不到

33:nginx: [emerg] "worker_processes" directive is duplicate in
问题原因:This params is duplicate,please check your conf,two times configure.
解决方案:检查nginx的这个配置是否重载

34:10013: An attempt was made to access a socket in a way forbidden by its access permissions)
问题原因:nginx启动不起来
解决方法:端口被占用,更换端口,或者检查被哪个程序占用了。

35:1055 Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggregated column
问题原因:SQLSTATE[42000]: Syntax error or access violation: 1140 Mixing of GROUP columns (MIN(),MAX(),COUNT(),...) with no GROUP columns is illegal if there is no GROUP BY clause,MYSQL严格限制
解决方法:查询的字段必须要加上group by才行。

36:could not build server_names_hash, you should increase server_names_hash_bucket_size: 32
问题原因:nginx配置过小
解决方法:server_names_hash_bucket_size 64,更改nginx.conf这个变量的值

37:Cannot define multiple Listeners on the same IP:port
问题原因:在多个地方写了listen 80
解决方法:把刚写的删掉

38:PHPMailer\PHPMailer\Exception: The following From address failed
问题原因:使用163发送测试邮件时报错
解决方法:必须使用@163.com的from才行。

39:laravel The user credentials were incorrect
问题原因:这个一共出现了两次,出现的原因就是client_id+username+password等字段组合起来匹配不上导致的
解决方法:第一次是因为我没有添加guard参数,因为我是多用户登录,第二次是因为密码错误,输入正确的密码后正常。

40:Client authentication failed 
问题原因:登录时报错
解决方法:查看自己配置的clinet_id数据库是否存在。

41:OpenSSL: error:14077410:SSL routines:SSL23_GET_SERVER_HELLO:sslv3 alert handshake failur
问题原因:composer install 报错
解决方法:更换composer源为laravel提供的源,问题解决(注意,要先删除composer.lock文件,不然不生效)

42:Class session does not exist
问题原因:部署laravel项目时报错
解决方法:网上大部分方法都没用,因为这个其实是看错了,在postman里面的raw里面可以看到更详细的的报错,缺少了一个扩展。但是在pretty里面不知道为什么抛出了这个异常。把扩展require了就行

43:Cannot use a scalar value as an arra
问题原因:给索引数组赋值时报错
解决方法:类型转换的原因,网上大部分是变量复用,string或者int类型的变量没有释放(unset)就直接当做数组使用。我特殊一点,因为我把数组当成了一维数组进行赋值,后面又追加了高维数组,导致变量类型一样,但是维度冲突了,前面改赋值为关联数组后正常。
打赏作者

发表评论

电子邮件地址不会被公开。