Мое приложение Laravel 5.5 не работает на VPS с проверкой имен на удаленном сервере после развертывания, но нормально работает на локальном сервере с WAMP - PullRequest
0 голосов
/ 22 февраля 2020

Все в этом приложении работает нормально на моем локальном сервере, но отказалось работать удаленно. если я захожу в приложение www.mysite.com. Это всегда показывает внутреннюю ошибку сервера. Хотя у меня нет никакого маршрута в сети. php, но я ожидал перенаправить обратно на страницу 404, не найденную, но не делаю этого, но это происходит на localhost.

Другая главная проблема заключается в том, что у меня много маршруты в api. php, если я отправляю данные на любой из маршрутов, они принимают данные и могут даже сохранить их в базе данных там, где это необходимо, но никогда не вернут ответ json, который я определили после каждой успешной операции. В ответ я всегда получаю 500 внутренних ошибок сервера, даже если операция прошла успешно. Я занимаюсь этим вопросом уже более двух недель.

Я использую PHP 7.2 на сервере

Вот мой файл .htaccess

<IfModule mod_rewrite.c>
    <IfModule mod_negotiation.c>
        Options -MultiViews -Indexes
    </IfModule>
    RewriteEngine On
    RewriteBase /
    # 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]
</IfModule>

API. php

<?php

Route::group(['prefix' => 'user', 'namespace' => 'User'], function () {

    Route::post('/login', 'UserAuthController@userLogin');
    Route::post('/signup', 'UserAuthController@userSignup');

});

UserController. php

public function userSignup(Request $request)
    {
        $rules = [
            'name' => 'required|string|max:200',
            'password' => 'required|between:8,100|confirmed',
            'phone' => 'unique:users|required|digits:11|numeric',
            'email' => 'unique:users|required|email',

        ];
        $validator = Validator::make($request->all(), $rules);
        $code = mt_rand(100000, 900000);
        $hCode = FacadesHash::make($code);
        if ($validator->passes()) {
            $user = User::create([
                'name' => $request['name'],
                'email' => $request['email'],
                'phone' => $request['phone'],
                'otp' => $hCode,
                'password' => FacadesHash::make($request['password']),
            ]);

            $data = [
                'name' => $request['name'], 'subject' => 'Email Confirmation',
                'view' => 'mails.emailconfirm', 'code' => $code
            ];


            return response()->json(['success' => true, 'status' => 200, 'message' => 'Your account has been created successfully and an OTP code has been sent to your email'], 200);
        } else {

            return response()->json(['success' => false, 'status' => 200, 'message' => $validator->errors()->first()], 200);
        }
    }

маршрут регистрации, например, работает нормально, но никогда не вернет указанный вами ответ Json, он скорее вернет 500 внутренних ошибок сервера, даже если все прошло хорошо.

В моем * ошибка не регистрируется 1029 * storage / log , если все прошло хорошо, и я не получил ответ. Но я вижу ошибку там, если операция не была успешной.

все папки имеют разрешения 777 , и я также много раз очищаю все кеши

1 Ответ

0 голосов
/ 22 февраля 2020

Проблема решена . Проблема заключается в моем промежуточном программном обеспечении.

Он был настроен следующим образом до

<?php

namespace App\Http\Middleware;

use Closure;

class CORS
{
    /**
     * Handle an incoming request.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  \Closure  $next
     * @return mixed
     */
    public function handle($request, Closure $next)
    {
        header('Access-Control-Allow-Origin : *');
        header('Access-Control-Allow-Headers : Content-Type,X-Auth-Token,Authorization,Origin');
        return $next($request);
    }
}

Теперь я изменил его на этот новый ниже, и все стало работать отлично

<?php

namespace App\Http\Middleware;

use Closure;

class CORS
{
    /**
     * Handle an incoming request.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  \Closure  $next
     * @return mixed
     */
    public function handle($request, Closure $next)
    {
        return $next($request)
            ->header('Access-Control-Allow-Origin', '*')
            ->header('Access-Control-Allow-Headers', 'Content-type, X-Auth-Token, Authorization, Origin');
    }
}
...