Laravel localhost工作,但heroku给出500错误 [英] Laravel localhost works, but heroku gives 500 error

查看:338
本文介绍了Laravel localhost工作,但heroku给出500错误的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在从事需要将一些数据从excel转换为数据库的项目。这与在laravel的本地主机上工作正常,但是当去到heroku时,它会给我一个500内部服务器错误。



我在heroku搜索了一些指向可能的东西是的,那么我发现heroku的数据库有两个从请求中插入的值。所以这意味着代码会循环两次,但会发生错误。



我试图在代码中查找错误4个小时,而且我没有找到什么...

以下是代码:

 公共职能insertFromExcel(){

$ excel = new \Maatwebsite\Excel\Facades\Excel();

$ data = $ excel :: load('../../../ excel_files / relacao_5.xls',function($ reader){

}) - >得到();

foreach($ data as $ row){


// ------------------- ---------------------- Verifica Setor -------------------------- -----------

if(isset($ row ['nome_setor'])){
$ setor_id = DB :: table('setor') - > where('nome','=',$ row ['nome_setor']) - > pluck('id');

if($ setor_id == null){
$ setor_id = DB :: table('setor') - > insertGetId([
'nome'=> $ row ['nome_setor']
]);
}
}
else {
$ setor_id = null;
}

// ----------------------------------- ------ Verifica Funcionario --------------------------------

$ funcionario_id = DB :: table('funcionario') - >其中('matricula','=',$ row ['codfun']) - > pluck('id');



if($ funcionario_id === null){
$ funcionario_id = DB :: table('funcionario') - > insertGetId([
'nome'=> $ row ['nome_func'],
'matricula'=> $ row ['codfun'],
'pis_pasep'=> $ row ['pis_pasep' ],
'data_admisao'=> $ row ['admissao'],
'setor_id'=> $ setor_id
]);

$ {

$ funcionario_pis_pasep = DB :: table('funcionario') - >其中('matricula','=',$ row ['codfun' ]) - >摘下( 'pis_pasep');

if($ funcionario_pis_pasep == null || $ funcionario_pis_pasep == 0){
DB :: table('funcionario')
- > where('id', $ funcionario_id)
- > update([
'pis_pasep'=> $ row ['pis_pasep']
]);



$ b $ funcionario_setor = DB :: table('funcionario') - >其中('matricula','=',$ row [' codfun ']) - >摘下(' setor_id');

if($ funcionario_setor == null){
DB :: table('funcionario')
- >其中('id',$ funcionario_id)
- > update([
'setor_id'=> $ setor_id
]);
}
}


// -------------------------- --------------- Verifica Cargos --------------------------------

if(strpos($ row ['descrnivcarg','GERENTE')!== false){

$ gerente = DB :: table('gerente')
- > join('funcionario','gerente.funcionario_id','=','funcionario.id')
- >其中('funcionario.id','=',$ funcionario_id)
- > pluck('gerente.id');

if($ gerente == null){
$ user_id = DB :: table('usuario') - > insertGetId(['senha'=&'12345',' nivel'=> 3]);
$ b DB :: table('gerente') - > insert([
'funcionario_id'=> $ funcionario_id,$ b $'usuario_id'=> $ user_id
]);


if(strpos($ row ['descrnivcarg','COORDENADOR')!== false){

$ coordenador = DB ::表('coordenador')
- >加入('funcionario','coordenador.funcionario_id','=','funcionario.id')
- > where('funcionario.id', '=',$ funcionario_id)
- > pluck('coordenador.id');

if($ coordenador == null){
$ user_id = DB :: table('usuario') - > insertGetId(['senha'=&'12345']) ;
$ b DB :: table('coordenador') - > insert([
'funcionario_id'=> $ funcionario_id,$ b $'usuario_id'=> $ user_id
]);


if(strpos($ row ['descrnivcarg'],SUPERVISOR)!== false){

$ supervisor = DB :: table''supervisor')
- > join('funcionario','supervisor.funcionario_id','=','funcionario.id')
- > where('funcionario.id', '=',$ funcionario_id)
- > pluck('supervisor.id');

if($ supervisor == null){
$ user_id = DB :: table('usuario') - > insertGetId(['senha'=&'12345',' nivel'=> 2]);
$ b DB :: table('supervisor') - > insert([
'funcionario_id'=> $ funcionario_id,$ b $'usuario_id'=> $ user_id
]);

$ b $ if if(strpos($ row ['descrnivcarg','ESTAGIARIO')!== false){

$ estagiario = DB :: table('estagiario')
- > join('funcionario','estagiario.funcionario_id','=','funcionario.id')
- > where('funcionario.id', '=',$ funcionario_id)
- > pluck('estagiario.id');

if($ estagiario == null){
$ user_id = DB :: table('usuario') - > insertGetId(['senha'=&'12345',' nivel'=> 1]);
$ b DB :: table('estagiario') - > insert([
'funcionario_id'=> $ funcionario_id,$ b $'usuario_id'=> $ user_id
]); ('''''','''''''''''''''''')$ - $ $ $ $ $ $ $ $ $' >摘下( 'ID');

if($ cargo_id == null){
$ cargo_id = DB :: table('cargo') - > insertGetId(['nome'=> $ row ['descrnivcarg ]]);


$ b $ operario = DB :: table('operario')
- > join('funcionario','operario.funcionario_id','= ','funcionario.id')
- >其中('operario.id','=',$ funcionario_id)
- > pluck('operario.id');

if($ operario == null){

DB :: table('operario') - > insert([
'funcionario_id'=> $ funcionario_id,
'cargo_id'=> $ cargo_id,
]);



$ funcionario_db [] = DB :: table('funcionario') - > select('matricula','nome', 'data_admisao','pis_pasep') - > get();

返回$ funcionario_db;



解决方案

更多的时间试图弄清楚代码发生了什么,我发现这是Apache超时问题。



我找到了答案这里



积分: Eric Cope


I'm working in a project that needs to convert some data from excel to database. This is working fine in local host with laravel, but when goes to heroku, it gives me a 500 internal server error.

I searched in heroku for something that point what could be, then I discovered that the heroku's database has 2 values inserted from the requests. So it means that the code loops twice, but then the error occurs.

I tried to find the error in the code for 4 hours, and I didn't found what is going on...

Here is the code:

public function insertFromExcel(){

        $excel = new \Maatwebsite\Excel\Facades\Excel();

        $data = $excel::load('../../../excel_files/relacao_5.xls', function ($reader) {

        })->get();

        foreach ($data as $row) {


            //-----------------------------------------Verifica Setor-------------------------------------

            if(isset($row['nome_setor'])){
                $setor_id = DB::table('setor')->where('nome', '=', $row['nome_setor'])->pluck('id');

                if ($setor_id == null) {
                    $setor_id = DB::table('setor')->insertGetId([
                        'nome' => $row['nome_setor']
                    ]);
                }
            }
            else{
                $setor_id = null;
            }

            //-----------------------------------------Verifica Funcionario--------------------------------

            $funcionario_id = DB::table('funcionario')->where('matricula', '=', $row['codfun'])->pluck('id');



            if ($funcionario_id === null) {
                $funcionario_id = DB::table('funcionario')->insertGetId([
                    'nome' => $row['nome_func'],
                    'matricula' => $row['codfun'],
                    'pis_pasep' => $row['pis_pasep'],
                    'data_admisao' => $row['admissao'],
                    'setor_id' => $setor_id
                ]);
            }
            else{

                $funcionario_pis_pasep = DB::table('funcionario')->where('matricula', '=', $row['codfun'])->pluck('pis_pasep');

                if($funcionario_pis_pasep == null || $funcionario_pis_pasep == 0){
                    DB::table('funcionario')
                        ->where('id', $funcionario_id)
                        ->update([
                            'pis_pasep' => $row['pis_pasep']
                        ]);
                }



                $funcionario_setor = DB::table('funcionario')->where('matricula', '=', $row['codfun'])->pluck('setor_id');

                if($funcionario_setor == null){
                    DB::table('funcionario')
                        ->where('id', $funcionario_id)
                        ->update([
                            'setor_id' => $setor_id
                        ]);
                }
            }


            //-----------------------------------------Verifica Cargos--------------------------------

            if (strpos($row['descrnivcarg'], "GERENTE") !== false) {

                $gerente = DB::table('gerente')
                    ->join('funcionario', 'gerente.funcionario_id', '=', 'funcionario.id')
                    ->where('funcionario.id', '=', $funcionario_id)
                    ->pluck('gerente.id');

                if ($gerente == null) {
                    $user_id = DB::table('usuario')->insertGetId(['senha' => '12345', 'nivel' => 3]);

                    DB::table('gerente')->insert([
                        'funcionario_id' => $funcionario_id,
                        'usuario_id' => $user_id
                    ]);
                }
            }
            if (strpos($row['descrnivcarg'], "COORDENADOR") !== false) {

                $coordenador = DB::table('coordenador')
                    ->join('funcionario', 'coordenador.funcionario_id', '=', 'funcionario.id')
                    ->where('funcionario.id', '=', $funcionario_id)
                    ->pluck('coordenador.id');

                if ($coordenador == null) {
                    $user_id = DB::table('usuario')->insertGetId(['senha' => '12345']);

                    DB::table('coordenador')->insert([
                        'funcionario_id' => $funcionario_id,
                        'usuario_id' => $user_id
                    ]);
                }
            }
            if (strpos($row['descrnivcarg'], "SUPERVISOR") !== false) {

                $supervisor = DB::table('supervisor')
                    ->join('funcionario', 'supervisor.funcionario_id', '=', 'funcionario.id')
                    ->where('funcionario.id', '=', $funcionario_id)
                    ->pluck('supervisor.id');

                if ($supervisor == null) {
                    $user_id = DB::table('usuario')->insertGetId(['senha' => '12345', 'nivel' => 2]);

                    DB::table('supervisor')->insert([
                        'funcionario_id' => $funcionario_id,
                        'usuario_id' => $user_id
                    ]);
                }
            }
            if (strpos($row['descrnivcarg'], "ESTAGIARIO") !== false) {

                $estagiario = DB::table('estagiario')
                    ->join('funcionario', 'estagiario.funcionario_id', '=', 'funcionario.id')
                    ->where('funcionario.id', '=', $funcionario_id)
                    ->pluck('estagiario.id');

                if ($estagiario == null) {
                    $user_id = DB::table('usuario')->insertGetId(['senha' => '12345', 'nivel' => 1]);

                    DB::table('estagiario')->insert([
                        'funcionario_id' => $funcionario_id,
                        'usuario_id' => $user_id
                    ]);
                }
            } else {
                $cargo_id = DB::table('cargo')->where('nome', '=', $row['descrnivcarg'])->pluck('id');

                if ($cargo_id == null) {
                    $cargo_id = DB::table('cargo')->insertGetId(['nome' => $row['descrnivcarg']]);
                }


                $operario = DB::table('operario')
                    ->join('funcionario', 'operario.funcionario_id', '=', 'funcionario.id')
                    ->where('operario.id', '=', $funcionario_id)
                    ->pluck('operario.id');

                if ($operario == null) {

                    DB::table('operario')->insert([
                        'funcionario_id' => $funcionario_id,
                        'cargo_id' => $cargo_id,
                    ]);
                }
            }
        }

        $funcionario_db[] = DB::table('funcionario')->select('matricula', 'nome', 'data_admisao', 'pis_pasep')->get();

        return $funcionario_db;

    }

解决方案

After some more hours trying to figure out what is going on with the code, I discovered that it was a problem with the Apache timeout.

I found the answer here.

Credits: Eric Cope

这篇关于Laravel localhost工作,但heroku给出500错误的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆