Laravel 5 TokenMismatchException на PHP 5.6.9

Почтовые запросы работают нормально. Приложение Laravel 5 на PHP 5.4. Почтовые запросы в том же приложении, работающем на PHP 5.6.9, генерируют:

TokenMismatchException VerifyCsrfToken.php в строке 46

Это происходит при каждом запросе на почту как на WAMP, так и на IIS. Случается с использованием сеансов базы данных и сеансов файлов. Полностью переустановил, а также попробовал все предложения, сделанные здесь: https://laracasts.com/discuss/channels/general-discussion/keep-getting-tokenmismatchexception-verifycsrftokenphp-onlineline-46?page=2 . Люди отключают промежуточное ПО Csrf как исправление, но это не жизнеспособное решение. Любая помощь оценивается.

Когда я понял, что это происходит только в IE и Chrome, но не в Firefox, это привело меня к исправлению. Приложение использовало кнопки добавления AddThis, а javascript добавлял iframe на страницы. Эту проблему можно решить, добавив заголовок P3P в промежуточное ПО VerifyCsrfToken. Надеюсь, это спасет кого-нибудь в те часы, которые я потерял.

 public function handle($request, Closure $next) { $response = $next($request); if (last(explode('\\',get_class($response))) != 'RedirectResponse') { $response->header('P3P', 'CP="IDC DSP COR ADM DEVi TAIi PSA PSD IVAi IVDi CONi HIS OUR IND CNT"'); } return $response; } 

Поместите <meta name="csrf_token" content="{{ csrf_token() }}"> так что токен всегда доступен и используется с вашим запросом AJAX: ex:

 var csrftoken = (function() { var metas = window.document.getElementsByTagName('meta'); for(var i=0 ; i < metas.length ; i++) { if ( metas[i].name === "csrf-token") { return metas[i].content; } }})(); 

просто добавьте {{ csrf_field() }} в блок формы, и это сэкономит вам много времени

 <form action="{{ route('signup') }}" method="post" class="form-signin"> {{ csrf_field() }} ... </form> 

Для тех, кто сталкивается с этой проблемой, несмотря на добавление {{ csrf_field() }} в поле form и даже добавив это в тег <meta name="csrf-token" content="{{ csrf_token() }}">

Проблема заключается в записи в хранилище из-за того, что вы не добавляете своего текущего пользователя в Linux в нужную группу. Обязательно добавьте своего текущего пользователя в группу www-data . Напишите эту команду

 sudo chown -R :www-data /path/to/laravel-folder 

Обязательно укажите права на папку для хранения, а также в приложении laravel.

 sudo chmod -R 775 /path/to/laravel-folder/storage 

Надеюсь, это поможет.