1.看好红色的部分,是提示注解带有单引号《'》的字符,检查下注解URL中是不是带有单引号《'》的符号,如果有,统一改成《""》双引号的。保存就可以了
Stack trace:
#0 /server/www/swoft/vendor/doctrine/annotations/lib/Doctrine/Common/Annotations/DocParser.php(446): Doctrine\Common\Annotations\AnnotationException::syntaxError('Expected PlainV...')
#1 /server/www/swoft/vendor/doctrine/annotations/lib/Doctrine/Common/Annotations/DocParser.php(1068): Doctrine\Common\Annotations\DocParser->syntaxError('PlainValue')
#2 /server/www/swoft/vendor/doctrine/annotations/lib/Doctrine/Common/Annotations/DocParser.php(1020): Doctrine\Common\Annotations\DocParser->PlainValue()
#3 /server/www/swoft/vendor/doctrine/annotations/lib/Doctrine/Common/Annotations/DocParser.php(874): Doctrine\Common\Annotations\DocParser->Value()
#4 /server/www/swoft/vendor/doctrine/annotations/lib/Doctrine/Common/Annotations/DocParser.p in /server/www/swoft/vendor/doctrine/annotations/lib/Doctrine/Common/Annotations/AnnotationException.php on line 42
PHP Fatal error: Uncaught Doctrine\Common\Annotations\AnnotationException: [Syntax Error] Expected PlainValue, got ''' at position 12 in class App\Controllers\TestController. in /server/www/swoft/vendor/doctrine/annotations/lib/Doctrine/Common/Annotations/AnnotationException.php:42
2.此问题是端口被占用,到swoft下的.en文件修改一个叫8181的端口,保存就行了
3.如果出现访问URL是对,但老是报404错误时,一定是你的注解头多一个或者多个*号了,一定是两个*号开头,多也不行少了不行。如这种情况
问题404
{"msg":"Route not found for \/test\/index","file":"\/server\/www\/swoft\/vendor\/swoft\/http-server\/src\/Router\/HandlerAdapter.php","line":49,"code":404}
问题所在
4.当老是提示控制器Controller命名重复时,这是要检查下该控制器命名空间导入是否正确,导入的Controller是App\Controllers;后面有s,如果情况
解决问题,命名空间是App\Controllers, 不是App\Controller
5. 提示导入@Inject类,如图
解决方案-》在controller中导入Inject(说准确点是,哪个类缺少inject类,在该类导入其类)
6.该错误提示该类下缺少导入Bean类,在该类导入就可以了,错误提示,如图
7.swoft验证器,一定要注意,use相关的组件,如@Number, ValidatorFrom...,所有提示Annotations都是告诉你最近的注解有误或者未use相关组件,每个错误控制台都有提示的,如图
提示找不到相关ValidatorFrom的组件,use 进来就可以了
8.执行url提示socket问题时,如果
该提示是告诉我们系统找不到这个路劲,要去检查下注解是否正确,像我这么粗心,要不是缺了/,就是prefix
9.所有看到AnnotationException都是注解问题,需要仔细看哪里有问题,想我就把$符号打成成@符号,如图
解决方案:把提示所有带有@符号错误的,都改成$符号,这是语法的错误,注意,php变量是$符号
10.总结java.net.SocketException: Connection reset几个解决方案,提示如下
1.检查@Controller是否注解正确,正确写法是@Controller(prefix="/route")
或 @Controller("/route")
2.检查@RequestMapping注解是不是正确,正确写法是@RequestMapping(route="search",method={RequestMethod::GET}),method没有大写,不要写成Method,这样就男女不分了
11.引入共有方法运行提示该方法是空是,解决方法是在引入方法上面加入@Inject()注解
分享: