当前位置: 首页 > 后端技术 > PHP

laravel使用遇到的问题

时间:2023-03-30 01:28:36 PHP

好久没研究了!糊涂,除了糊涂,我还是糊涂!最近公司接手了一个laravel项目,可惜没有phper,于是开始学习laravel。现在的情况是还得先开始跑才能走,所以遇到坑会摔得很痛!安装问题安装步骤(5.3.*)composerglobalrequire"laravel/installer"composercreate-project--prefer-distlaravel/laravelblog"5.3.*"问题①Cannotinstallcomposerdependencyerror:php.iniMissingmbstringlaravel/frameworkv5.4.9需要ext-mbstring*->您的系统缺少请求的PHP扩展mbstring。解决方法:发布注释extension=php_mbstring.dll②phpartisansercanrunbutthepagereportsanerror:TheonlysupportedciphersareAES-128-CBCandAES-256-CBC解决方法:先运行这个命令phpartisankey:generate然后运行phpartisanconfig:clear③同事安装php的问题:php.ini在openssl开启时报错openssl.dllcannotfinderror显示其配置,默认去C:/php/ext/查找openssl.dll文件.解决方法:他开了一个虚拟机,修改extension_dir="./"路径为绝对路径④在本地运行时,post请求报错:TokenMismatchExceptioninVerifyCsrfToken.phpline68:inVerifyCsrfToken.phpline68atVerifyCsrfToken->handle(object(Request),object(Closure))inPipeline.phpline137atPipeline->Illuminate\Pipeline\{closure}(object(Request))inPipeline.phpline33atPipeline->Illuminate\Routing\{closure}(object(Request))inShareErrorsFromSession.phpline49atShareErrorsFromSession->handle(object(Request),object(Closure))inPipeline.phpline137atPipeline->Illuminate\Pipeline\{closure}(object(Request))inPipeline.phpline33atPipeline->Illuminate\Pipeline\{closure}(object(Request))inStartSession.phpline64atStartSession->handle(object(Request),object(Closure))inPipeline.phpline137atPipeline->Illuminate\Pipeline\{closure}(object(Request))在Pipeline.php中的第33行中的Pipeline->Illuminate\Routing\{closure}(object(Request))在AddQueuedCookiesToResponse.php中的第37行中的AddQueuedCookiesToResponse->handle(object(Request),object(Closure))在Pipeline.php中Pip中的Pipeline->Illuminate\Pipeline\{closure}(object(Request))第137行eline.php第33行在Pipeline->Illuminate\Routing\{closure}(object(Request))在EncryptCookies.php第59行在EncryptCookies->handle(object(Request),object(Closure))在Pipeline.php第137行在Pipeline->Illuminate\Pipeline\{closure}(object(Request))inPipeline.phpline33atPipeline->Illuminate\Routing\{closure}(object(Request))inPipeline.phpline104atPipeline->Router.php第655行中的then(object(Closure))Router->runRouteWithinStack(object(Route),object(Request))在Router.php中第629行中的Router->dispatchToRoute(object(Request))在Router.php中第607行在Router->dispatch(object(Request))inKernel.phpline268atKernel->Illuminate\Foundation\Http\{closure}(object(Request))inPipeline.phpline53atPipeline->Illuminate\Routing\{closure}(object(Request))inEnableCrossRequestMiddleware.phpline19atEnableCrossRequestMiddleware->handle(object(Request),object(Closure))inPipeline.phpline137atPipeline->Illuminate\Pipeline\{closure}(object(Request))inPipeline.phpline33atPipeline->Illuminate\Routing\{closure}(object(Request))inCheckForMaintenanceMode.phpline46atCheckForMaintenanceMode->handle(object(Request),object(Closure))inPipeline.phpline137atPipeline->Illuminate\Pipeline\{closure}(object(Request))inPipeline.phpline33atPipeline->Illuminate\Routing\{closure}(object(Request))inPipeline.phpline104atPipeline->then(object(Closure))inKernel.phpline150atKernel->sendRequestThroughRouter(object(Request))inKernel.phpline117atKernel->handle(object(Request))inindex.phpline54atrequire_once('E:\phpStudy\WWW\mylaravel\blog\public\index.php')inserver.phpline21原因:为了防止跨站脚本攻击(CSRF),laravel会为每个活跃的用户会话自动生成一个CSRF“token”,用于验证通过身份验证的是否是用户是t他向应用程序提出请求。解决方法:在app/Http/Middleware/VerifyCsrfToken释放需要访问的地址。如protected$except=[///*,/wechat,];⑤遇到跨域问题(laravel跨域))运行命令phpartisanmake:middlewareEnableCrossRequestMiddleware会在app/Http/Middlewareserver('HTTP_ORIGIN')?$request->server('HTTP_ORIGIN'):'';$allow_origin=['http://localhost:8000',//允许跨域的列表了,可自行修改];如果(in_array($origin,$allow_origin)){$response->header('Access-Control-Allow-Origin',$origin);$response->header('Access-Control-Allow-Headers','Origin,Content-Type,Cookie,X-CSRF-TOKEN,Accept,Authorization,X-XSRF-TOKEN');$response->header('Access-Control-Expose-Headers','Authorization,authenticated');$response->header('Access-Control-Allow-Methods','GET,POST,PATCH,PUT,OPTIONS');$response->header('访问控制-允许凭据','真');}返回$响应;}}在内核文件中注册中间件(在App\Http\Kernel类的$middleware属性中添加,这里注册的中间件属于全局中间件)protected$middleware=[//more\App\Http\Middleware\EnableCrossRequestMiddleware::类,];⑥Composer安装报错报错:win7下使用命令行安装的Composer莫名报错[JsonSchema\Exception\ResourceNotFoundException]file_get_contents(file://):failedtoopenstream:Nosuchfileordirectory解决办法:下载Composer-Setup.exe并重新安装作曲家