Ошибка сервера 500 после входа в laravel 7

#javascript #php #html #jquery #laravel-7

Вопрос:

Я загрузил свой проект Laravel с хост-сервера. Промежуточный сервер правильно загружен и работает. В моем локальном, страница входа и регистрации была полностью загружена. Но я получал 500 ошибок сервера каждый раз после входа в систему с моими учетными данными. И почему мне нужно генерировать

ключ php artisan:создание

всякий раз, когда я перезапускаю сервер, в противном случае он показывает мне 500 ошибок сервера. Я не могу найти никакого решения за последние дни. У меня от этого голова болит. Извините за мой английский.

В корневой папке моего проекта у меня есть

общедоступный/.htaccess

 lt;IfModule mod_rewrite.cgt;  lt;IfModule mod_negotiation.cgt;  Options -MultiViews -Indexes  lt;/IfModulegt;   RewriteEngine On   # Handle Authorization Header  RewriteCond %{HTTP:Authorization} .  RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]   # Redirect Trailing Slashes If Not A Folder...  RewriteCond %{REQUEST_FILENAME} !-d  RewriteCond %{REQUEST_URI} (. )/$  RewriteRule ^ %1 [L,R=301]   # Handle Front Controller...  RewriteCond %{REQUEST_FILENAME} !-d  RewriteCond %{REQUEST_FILENAME} !-f  RewriteRule ^ index.php [L] lt;/IfModulegt;  

В моем контроллере входа в систему,

 public function userLogin(Request $request)  {  // login when add to cart or wishlist  $action = $request-gt;input('action');  $id = $request-gt;input('id');  $type = $request-gt;input('type');  $redirect = $request-gt;input('redirect');   $rules = [  'email' =gt; 'required|email',  'password' =gt; 'required'  ];  $messages = [  'email.required' =gt; __('Email is required field'),  'email.email' =gt; __('Invalid email'),  'password.required' =gt; __('Password is required field'),  ];  if (ReCaptchaEngine::isEnable() and setting_item("user_enable_login_recaptcha")) {  $codeCapcha = $request-gt;input('g-recaptcha-response');  if (!$codeCapcha or !ReCaptchaEngine::verify($codeCapcha)) {  $errors = new MessageBag(['message_error' =gt; __('Please verify the captcha')]);  return response()-gt;json([  'error' =gt; true,  'messages' =gt; $errors  ], 200);  }  }  $validator = Validator::make($request-gt;all(), $rules, $messages);  if ($validator-gt;fails()) {  return response()-gt;json([  'error' =gt; true,  'messages' =gt; $validator-gt;errors(),  'redirect' =gt; false  ], 200);  } else {  $email = $request-gt;input('email');  $password = $request-gt;input('password');  $request-gt;session()-gt;put('user_email', $email);  //session('user_email',$email);  $request-gt;session()-gt;put('user_password', $password);  session('user_password', $password);  $tempUser = User::where('email', $email)-gt;first();  $url = strip_tags($request-gt;input('redirect')) ? strip_tags($request-gt;input('redirect')) : url('');  if (empty($tempUser)) {  $errors = new MessageBag(['message_error' =gt; __('Username or password incorrect')]);  return response()-gt;json([  'error' =gt; true,  'messages' =gt; $errors,  'redirect' =gt; false  ], 200);  }   if ($tempUser-gt;status == 'blocked') {  $errors = new MessageBag(['message_error' =gt; __('Your account has been blocked')]);  return response()-gt;json([  'error' =gt; true,  'messages' =gt; $errors,  'redirect' =gt; false  ], 200);  }   // $temp = strtolower($tempUser-gt;roles[0]-gt;name);  // if ($temp == "administrator") {  // $checkUser = Hash::check($password, $tempUser-gt;password);   // if ($checkUser) {  // Auth::attempt([  // 'email' =gt; $email,  // 'password' =gt; $password  // ], false);      // $remember = !empty($request-gt;remember) ? true : false;   // if ($remember) {   // $lifetime = time()   60 * 60 * 24 * 365; // one year  // Cookie::queue(Cookie::make('uplyrn_email_login', $email, $lifetime));  // //$response_cooki-gt;withCookie(cookie('save_email_login',Auth::user()-gt;email , $lifetime));  // } else {  // Cookie::queue(Cookie::forget('uplyrn_email_login'));  // }  // Auth::login($tempUser, $remember);  // if (!empty($request-gt;input('id'))) {  // if ($this-gt;handleActionLogin($action, $id, $type)) {  // if (!empty($type)) {  // $key = 'isWishList';  // $value = "true";  // $request-gt;session()-gt;put($key, $value);  // }  // BravoCart::where("user_id", Auth::user()-gt;id)-gt;get()-gt;each(function ($item) {  // Cart::add($item-gt;course, 1);  // });  // return response()-gt;json([  // 'error' =gt; false,  // 'messages' =gt; false,  // 'redirect' =gt; $redirect  // ], 200);  // }  // }   // BravoCart::where("user_id", Auth::user()-gt;id)-gt;get()-gt;each(function ($item) {  // Cart::add($item-gt;course, 1);  // });  // return response()-gt;json(  // [  // 'error' =gt; false,  // 'messages' =gt; false,  // 'redirect' =gt; '/admin'  // ]  // );  // } else {  // $errors = new MessageBag(['message_error' =gt; __('Username or password incorrect')]);  // return response()-gt;json([  // 'error' =gt; true,  // 'messages' =gt; $errors,  // 'redirect' =gt; false  // ], 200);  // }  // }  $remember = !empty($request-gt;remember) ? true : false;   if (Auth::attempt([  'email' =gt; $email,  'password' =gt; $password  ], $remember)) {  $remember = !empty($request-gt;remember) ? true : false;  Auth::login($tempUser, $remember);  Auth::logoutOtherDevices($password);  if (in_array(Auth::user()-gt;status, ['blocked'])) {  Auth::logout();  $errors = new MessageBag(['message_error' =gt; __('Your account has been blocked')]);  return response()-gt;json([  'error' =gt; true,  'messages' =gt; $errors,  'redirect' =gt; false  ], 200);  }   $remember = !empty($request-gt;remember) ? true : false;   if ($remember) {   $lifetime = time()   60 * 60 * 24 * 365; // one year  Cookie::queue(Cookie::make('uplyrn_email_login', $email, $lifetime));  //$response_cooki-gt;withCookie(cookie('save_email_login',Auth::user()-gt;email , $lifetime));  } else {  Cookie::queue(Cookie::forget('uplyrn_email_login'));  }  Auth::login($tempUser, $remember);  // $url = strip_tags($request-gt;input('redirect'));  // $url = url('');   if (isset(Auth::user()-gt;roles) amp;amp; !empty(Auth::user()-gt;roles)) {  if (isset(Auth::user()-gt;roles[0])) {  switch (strtolower(Auth::user()-gt;roles[0]-gt;name)) {  case 'administrator':  case 'admin':  //$url .= '/admin';  Auth::logout();  $request-gt;input('redirect') ? $url : $url .= '/show2Fa';  break;  case 'lecturer':  $request-gt;input('redirect') ? $url : $url .= '/user/profile ';  break;  case 'student':  case 'customer':  $request-gt;input('redirect') ? $url : $url .= '/all-courses';  break;  default:  break;  }  }  }   if (!empty($request-gt;input('id'))) {  if ($this-gt;handleActionLogin($action, $id, $type)) {  if (!empty($type)) {   $key = 'isWishList';  $value = "true";  $request-gt;session()-gt;put($key, $value);  }  BravoCart::where("user_id", Auth::user()-gt;id)-gt;get()-gt;each(function ($item) {   Cart::add($item-gt;course, 1);  });  return response()-gt;json([  'error' =gt; false,  'messages' =gt; false,  'redirect' =gt; $redirect,  ], 200);  }  }   BravoCart::where("user_id", Auth::user()-gt;id)-gt;get()-gt;each(function ($item) {   Cart::add($item-gt;course, 1);  });   // var_dump(auth()-gt;user());  return response()-gt;json([  'error' =gt; false,  'messages' =gt; false,  'redirect' =gt; $url ? e($url) : url(app_get_locale(false, '/'))  ], 200);  } else {  $errors = new MessageBag(['message_error' =gt; __('Username or password incorrect')]);  return response()-gt;json([  'error' =gt; true,  'messages' =gt; $errors,  'redirect' =gt; false  ], 200);  }  }  }  

После входа в систему с контроллера я вернул данные Json в свой метод успеха ajax. В моем методе seccess я перенаправляю маршрут на (127.0.0.1:8000/), то есть из data.redirect. После этого я получил ошибку сервера 500.

 $.ajax({  url: bookingCore.routes.login,  data: {  email: form.find('input[name=email]').val(),  password: form.find('input[name=password]').val(),  remember: form.find('input[name=remember]').is(':checked') ? 1 : '',  'g-recaptcha-response': form.find('[name=g-recaptcha-response]').val(),  redirect: form.find('input[name=redirect]').val(),  action: form.find('input[name=action]').val(),  id: form.find('input[name=id]').val(),  type: form.find('input[name=type]').val(),  },  type: 'POST',  beforeSend: function() {  form.find('.error').hide();  form.find('.icon-loading').css('display', 'inline-block');  },  success: function(data) {  console.log(data);  form.find('.icon-loading').hide();  if (data.error === true) {  if (data.messages !== undefined) {  for (var item in data.messages) {  var msg = data.messages[item];  console.log(item);  form  .find('.error-'   item)  .show()  .text(msg[0]);  }  }  if (data.messages.message_error !== undefined) {  $('.form-right-question p').addClass('form-right-question-change');  form  .find('.message-error')  .show()  .html(  'lt;div class="message-login"gt;'    data.messages.message_error[0]    'lt;/divgt;'  );  }  }  var data = JSON.parse(JSON.stringify(data));  if (data.redirect !== undefined amp;amp; data.redirect) {  window.location.href = data.redirect;  }  },  });  

Есть ли что-нибудь, что я пропустил, спасибо, извините за плохой английский.

Комментарии:

1. Если вам приходится звонить php artisan key:generate каждый раз, когда вы запускаете сервер, значит, с вашим сервером что-то не так. Можете ли вы опубликовать файлы журналов (сервер, Laravel, PHP)? Даже HTTP 500 может содержать ошибку в журнале сервера, чтобы помочь найти проблему.

2. Да, я обнаружил, что это проблемы с кодовой базой. Но этот код действительно работает на сервере, а не на моем локальном хосте. if(Auth::id()) этот код работает на сервере, а не на моем локальном. Поэтому мне приходится редактировать код вручную в моем локальном с if(!empty(Auth::id())) помощью вместо if(Auth::id()) . Пожалуйста, в чем проблема?

3. Почему бы не проверить, содержит ли URL-адрес локальный хост, а затем выполнить код a, иначе код b. У меня действительно есть это для меня, работает как заклинание. Тогда не нужно менять код

4. Потому что эти коды написаны другим разработчиком. Мы должны поддерживать. Но проблема в том, почему бы не работать в моем локальном, даже если это один и тот же код?

5. Опять же, просмотр файлов журналов поможет. Вы можете размещать сообщения здесь или напрямую в Google.