Код PHP Laravel возвращает ошибку 500 без предупреждения или ошибок в журнале - PullRequest
0 голосов
/ 10 апреля 2019

Я купил проект Laravel и у меня есть скрипт / код контроллера, который вызывает у меня проблемы. Я обновил свой XAMPP до 7.3.3 и завершил установку, однако в самом конце он выдает ошибку 500.

После нескольких часов отладки я обнаружил, что комментирование приведенных ниже строк решает проблему, но затем выдает мне больше ошибок на веб-сайте. Что не так с кодом ниже?

Полный код:

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use URL;
use DB;
use Hash;
use App\GeneralSetting;
use App\BusinessSetting;
use App\User;
use App\Product;

class InstallController extends Controller
{
    public function step0() {
        $this->writeEnvironmentFile('APP_URL', URL::to('/'));
        return view('installation.step0');
    }

    public function step1() {
        $permission['curl_enabled']           = function_exists('curl_version');
        $permission['db_file_write_perm']     = is_writable(base_path('.env'));
        $permission['routes_file_write_perm'] = is_writable(base_path('app/Providers/RouteServiceProvider.php'));
        return view('installation.step1', compact('permission'));
    }

    public function step2() {
        return view('installation.step2');
    }

    public function step3($error = "") {

        if($error == ""){
            return view('installation.step3');
        }else {
            return view('installation.step3', compact('error'));
        }
    }

    public function step4() {
        return view('installation.step4');
    }

    public function step5() {
        return view('installation.step5');
    }

    public function purchase_code(Request $request) {
        $request->session()->put('purchase_code', $request->purchase_code);
        return redirect('step3');
    }

    public function system_settings(Request $request) {
        $generalsetting = GeneralSetting::first();
        $generalsetting->site_name = $request->name;
        $generalsetting->address = $request->address;
        $generalsetting->phone = $request->phone;
        $generalsetting->email = $request->email;
        $generalsetting->save();

        $businessSetting = BusinessSetting::where('type', 'system_default_currency')->first();
        $businessSetting->value = $request->system_default_currency;
        $businessSetting->save();

        $this->writeEnvironmentFile('APP_NAME', $request->system_name);

        $user = new User;
        $user->name      = $request->admin_name;
        $user->email     = $request->admin_email;
        $user->password  = Hash::make($request->admin_password);
        $user->user_type = 'admin';
        $user->email_verified_at = date('Y-m-d H:m:s');
        $user->save();

        foreach(Product::all() as $product){
            $product->user_id = $user->id;
            $product->save();
        }

        $previousRouteServiceProvier = base_path('app/Providers/RouteServiceProvider.php');
        $newRouteServiceProvier      = base_path('app/Providers/RouteServiceProvider.txt');
        copy($newRouteServiceProvier, $previousRouteServiceProvier);
        //sleep(5);
        return view('installation.step6');

        // return redirect('step6');
    }
    public function database_installation(Request $request) {

        if(self::check_database_connection($request->DB_HOST, $request->DB_DATABASE, $request->DB_USERNAME, $request->DB_PASSWORD)) {
            $path = base_path('.env');
            if (file_exists($path)) {
                foreach ($request->types as $type) {
                    $this->writeEnvironmentFile($type, $request[$type]);
                }
                return redirect('step4');
            }else {
                return redirect('step3');
            }
        }else {
            return redirect('step3/database_error');
        }
    }

    public function import_sql() {
        $sql_path = base_path('shop.sql');
        DB::unprepared(file_get_contents($sql_path));
        return redirect('step5');
    }

    function check_database_connection($db_host = "", $db_name = "", $db_user = "", $db_pass = "") {

        if(@mysqli_connect($db_host, $db_user, $db_pass, $db_name)) {
            return true;
        }else {
            return false;
        }
    }

    public function writeEnvironmentFile($type, $val) {
        $path = base_path('.env');
        if (file_exists($path)) {
            $val = '"'.trim($val).'"';
            file_put_contents($path, str_replace(
                $type.'="'.env($type).'"', $type.'='.$val, file_get_contents($path)
            ));
        }
    }
}

Кусок кода, который разрешает ошибку 500 (при удалении / комментировании), но вызывает больше проблем:

$user->save();

foreach(Product::all() as $product){
    $product->user_id = $user->id;
    $product->save();
}

Понятия не имею, почему удаление / комментирование этого фрагмента кода, кажется, работает, но я надеялся, что кто-то может объяснить?

1 Ответ

0 голосов
/ 10 апреля 2019

Эта проблема была исправлена. Решение ниже.

Я следовал инструкциям Mayank Dudakiya и установил для app_debug значение true в файле env. Это позволило мне просмотреть все проблемы, и я устранил их 1 на 1, всего было 4 основных проблемы.

Моя настоящая проблема была связана с размером памяти innodb в mysqld. Простое редактирование my.ini позволило мне установить его от 5 до 500 м, и это решило проблему, позволило установить правильную базу данных и вуаля.

Спасибо всем, кто откликнулся.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...