Be part of JetBrains PHPverse 2026 on June 9 – a free online event bringing PHP devs worldwide together.

jonathanhooverns's avatar

Site works fine in homestead, won't work using forge, logs a "array_key_exists() expects parameter 2 to be array, null given"

I originally tried loading this site on a VPS without using forge, and kept getting this error. So, I went ahead and signed up for forge and deployed the site, but I still have the exact same problem. I get a laravel-styled 500 error when the site tries to load, and I get an "array_key_exists() expects parameter 2 to be array, null given" error. I sure would love any help anyone has to offer... it's so weird that this works great in homestead but I get this error when it's deployed.

0 likes
13 replies
lostdreamer_nl's avatar

do you have a stack trace? without it, it's next to impossible to find out where this error is coming from.

jonathanhooverns's avatar

I think this is it:

" GNU nano 2.9.3 laravel.log

[2018-09-28 19:12:12] production.ERROR: array_key_exists() expects parameter 2 $ [stacktrace] #0 [internal function]: Illuminate\Foundation\Bootstrap\HandleExceptions->ha$ #1 /home/forge/default/vendor/laravel/framework/src/Illuminate/Support/Arr.php($ #2 /home/forge/default/vendor/laravel/framework/src/Illuminate/Support/Arr.php($ #3 /home/forge/default/vendor/laravel/framework/src/Illuminate/Support/Arr.php($ #4 /home/forge/default/vendor/laravel/framework/src/Illuminate/Support/helpers.$ #5 /home/forge/default/app/Http/Controllers/VideoController.php(20): array_pull$ #6 [internal function]: App\Http\Controllers\VideoController->index() #7 /home/forge/default/vendor/laravel/framework/src/Illuminate/Routing/Controll$ #8 /home/forge/default/vendor/laravel/framework/src/Illuminate/Routing/Controll$ #9 /home/forge/default/vendor/laravel/framework/src/Illuminate/Routing/Route.ph$ #10 /home/forge/default/vendor/laravel/framework/src/Illuminate/Routing/Route.p$ #11 /home/forge/default/vendor/laravel/framework/src/Illuminate/Routing/Router.$ #12 /home/forge/default/vendor/laravel/framework/src/Illuminate/Routing/Pipelin$ #13 /home/forge/default/vendor/laravel/framework/src/Illuminate/Routing/Middlew$ #14 /home/forge/default/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeli$ #15 /home/forge/default/vendor/laravel/framework/src/Illuminate/Routing/Pipelin$ #16 /home/forge/default/vendor/laravel/framework/src/Illuminate/Foundation/Http$ #17 /home/forge/default/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeli$ #18 /home/forge/default/vendor/laravel/framework/src/Illuminate/Routing/Pipelin$ #19 /home/forge/default/vendor/laravel/framework/src/Illuminate/View/Middleware$ #20 /home/forge/default/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeli$ #21 /home/forge/default/vendor/laravel/framework/src/Illuminate/Routing/Pipelin$ #22 /home/forge/default/vendor/laravel/framework/src/Illuminate/Session/Middlew$ #23 /home/forge/default/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeli$ #24 /home/forge/default/vendor/laravel/framework/src/Illuminate/Routing/Pipelin$ #25 /home/forge/default/vendor/laravel/framework/src/Illuminate/Cookie/Middlewa$ #26 /home/forge/default/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeli$ #27 /home/forge/default/vendor/laravel/framework/src/Illuminate/Routing/Pipelin$ #28 /home/forge/default/vendor/laravel/framework/src/Illuminate/Cookie/Middlewa$ #29 /home/forge/default/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeli$ #30 /home/forge/default/vendor/laravel/framework/src/Illuminate/Routing/Pipelin$ #31 /home/forge/default/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeli$ #32 /home/forge/default/vendor/laravel/framework/src/Illuminate/Routing/Router.$ #33 /home/forge/default/vendor/laravel/framework/src/Illuminate/Routing/Router.$ #34 /home/forge/default/vendor/laravel/framework/src/Illuminate/Routing/Router.$ #35 /home/forge/default/vendor/laravel/framework/src/Illuminate/Routing/Router.$ #36 /home/forge/default/vendor/laravel/framework/src/Illuminate/Foundation/Http$ #37 /home/forge/default/vendor/laravel/framework/src/Illuminate/Routing/Pipelin$ #38 /home/forge/default/vendor/fideloper/proxy/src/TrustProxies.php(57): Illumi$ #39 /home/forge/default/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeli$ #40 /home/forge/default/vendor/laravel/framework/src/Illuminate/Routing/Pipelin$ #41 /home/forge/default/vendor/laravel/framework/src/Illuminate/Foundation/Http$ #42 /home/forge/default/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeli$ #43 /home/forge/default/vendor/laravel/framework/src/Illuminate/Routing/Pipelin$ #44 /home/forge/default/vendor/laravel/framework/src/Illuminate/Foundation/Http$ #45 /home/forge/default/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeli$ #46 /home/forge/default/vendor/laravel/framework/src/Illuminate/Routing/Pipelin$ #47 /home/forge/default/vendor/laravel/framework/src/Illuminate/Foundation/Http$ #48 /home/forge/default/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeli$ #49 /home/forge/default/vendor/laravel/framework/src/Illuminate/Routing/Pipelin$ #50 /home/forge/default/vendor/laravel/framework/src/Illuminate/Foundation/Http$ #51 /home/forge/default/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeli$ #52 /home/forge/default/vendor/laravel/framework/src/Illuminate/Routing/Pipelin$ #53 /home/forge/default/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeli$ #54 /home/forge/default/vendor/laravel/framework/src/Illuminate/Foundation/Http$ #55 /home/forge/default/vendor/laravel/framework/src/Illuminate/Foundation/Http$ #56 /home/forge/default/public/index.php(55): Illuminate\Foundation\Http\Ker$ #57 {main} "}

"

Snapey's avatar

What's in VideoController.php index function?

jonathanhooverns's avatar

namespace App\Http\Controllers;

use App\Video; use Illuminate\Http\Request; use Carbon\Carbon; use View;

class VideoController extends Controller {

public function index()
{
    $res = Video::orderBy('date_of_message', 'DESC')->get()->first();
    $name = array_pull($res, 'id');
    $videos = Video::all()->sortByDesc('date_of_message');
    return redirect()->route('show', [$name]);

   
}


   public function create(Request $request)
{
    $video = new Video;
    $video->title = $request->title;
    $video->description = $request->description;
    $video->video_number = $request->video_number;
    $video->date_of_message = $request->date_of_message;
    $video->nice_date = $video->date_of_message->toFormattedDateString();       

   

    $video->save();
    return redirect('/');
}

   public function store(Request $request)
{
    //
}


public function show(Video $video)
{
    $videos = Video::all()->sortByDesc('date_of_message')->except($video->id);
    
    return view('videos.show', compact('video', 'videos'));

}

    public function edit(Video $video)
{
          
   $video = Video::find($video->id);


   return View::make('videos.edit', compact('video'));

    

    
}

   public function update(Request $request, Video $video)
{
 
            
    $video->update([
            'title' => $request->title,
            'description' => $request->description,
            'date_of_message' => $request->date_of_message,
            'video_number' => $request->video_number,
            'nice_date' =>  Carbon::parse($request->date_of_message)->toFormattedDateString()    
        ]);

        return redirect ('/');
         }


 public function destroy(Video $video)
{
    $video->delete();
    return redirect ('/');
}

}

jonathanhooverns's avatar

This is the route that the index function redirects to. I think I made a mistake by putting $name in brackets like an array. But if I take it out of brackets it still fails.

Route::get('/videos/display/{video}', 'VideoController@show')->name('show');

jonathanhooverns's avatar

Solved: Ok this was a rookie mistake on my part; my index view shows existing records in the DB, which needed to be added to the production side DB. Once they were in there, it worked. Sorry. Thanks for pointing me toward the index method. I did find that array mistake there and that fixed part of the problem!

lostdreamer_nl's avatar

you might want to start using firstOrFail() instead of first()

This will throw an exception if nothing was found (which you can then catch and handle any way you want to).

This would then have thrown a 404 error (which would be easier to find / fix)

$res = Video::orderBy('date_of_message', 'DESC')->get()->firstOrFail();
jonathanhooverns's avatar

Thanks. I'm still a newbie with laravel, and active model for that matter. I appreciate the guidance!

shasn's avatar

I'm using the latest tech code in my site to help in performance and optimization. If you have new one code, then kindly share it.

muhsarim's avatar

I have a Wordpress site developed a year back. Now i want plan to move over laravel. Is that possible i can do and also keep my SEO performance and ranking? Thanks.

Javeed9879's avatar

I have a WordPress site on 10th Class Result 2021 developed last year. I want to move over Laravel and keep my SEO ranking? Can that be done, or does this require some technical expertise in order for it all work out smoothly?"

Please or to participate in this conversation.