1
votes

I've just deployed my app on Digitalocean. My upload image and the send email features which worked perfectly fine on my local server doesn't work on the production server. After debugging, I realized the problem is with this two.

Mail::send('emails.contact', $data, ....
Image::make($image);

$image is the image gotten from the post request.

My folder has a write permission for the web group. so I'm sure it isn't a permission problem. Besides, I have commented the save line out and I am still getting the error. Please help. Thanks. Here is my controller code

$images = $request->file('images');
$imageEmpty = array_filter($images);

if(!(empty($imageEmpty))){
    //$images = $request->file('images');
    $filePath = 'img/posts/'.$post->id.'/';
    File::makeDirectory(public_path($filePath));
    foreach ($images as $image){
        $filename = $image->getClientOriginalName();
        //Image::make($image)->resize(500,500)->save(public_path($filePath.$filename));
        $img = new Img;
        $img->name = $filename;
        $post->images()->save($img);

        Image::make($image); //->save(public_path($filePath.$filename));
    }

Here is my mailing controller

    $data = array(
      'email' => $request->email,
      'bodyMessage' => $request->message,
      'subject' => $request->subject
    );
    Mail::send('emails.contact', $data, function($message) use ($data){
        $message->from($data['email']);
        $message->to('[email protected]');
        $message->subject($data['subject']);
    });
    Session::flash('success',' Email was sent successfully!');
    return redirect()->route('contact.get');
}

Here is my stacktrace

[2016-09-07 22:10:26] production.ERROR: ReflectionException: Class App\Http\Controller$ Stack trace: #0 /var/www/laravel/bootstrap/cache/compiled.php(8572): ReflectionMethod->__construct($ #1 /var/www/laravel/bootstrap/cache/compiled.php(8281): Illuminate\Routing\Route->sign$ #2 /var/www/laravel/bootstrap/cache/compiled.php(8275): Illuminate\Routing\Router->sub$ #3 /var/www/laravel/bootstrap/cache/compiled.php(8266): Illuminate\Routing\Router->sub$ #4 /var/www/laravel/bootstrap/cache/compiled.php(8212): Illuminate\Routing\Router->fin$ #5 /var/www/laravel/bootstrap/cache/compiled.php(8207): Illuminate\Routing\Router->dis$ #6 /var/www/laravel/bootstrap/cache/compiled.php(2419): Illuminate\Routing\Router->dis$ #7 [internal function]: Illuminate\Foundation\Http\Kernel->Illuminate\Foundation\Http\$ #8 /var/www/laravel/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php(52): $ #9 /var/www/laravel/bootstrap/cache/compiled.php(3286): Illuminate\Routing\Pipeline->I$ #10 [internal function]: Illuminate\Foundation\Http\Middleware\CheckForMaintenanceMode$ #11 /var/www/laravel/bootstrap/cache/compiled.php(9963): call_user_func_array(Array, A$ #12 [internal function]: Illuminate\Pipeline\Pipeline->Illuminate\Pipeline{closure}(O$ #13 /var/www/laravel/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php(32):$ #14 [internal function]: Illuminate\Routing\Pipeline->Illuminate\Routing{closure}(Obj$ #15 /var/www/laravel/bootstrap/cache/compiled.php(9948): call_user_func(Object(Closure$ #16 /var/www/laravel/bootstrap/cache/compiled.php(2366): Illuminate\Pipeline\Pipeline-$ #17 /var/www/laravel/bootstrap/cache/compiled.php(2350): Illuminate\Foundation\Http\Ke$ #18 /var/www/laravel/public/index.php(53): Illuminate\Foundation\Http\Kernel->handle(O$ #19 {main

1
try to delete compiled.php and run composer updateFilip Koblański
@FilipKoblański Thanks for the quick reply. is it the 'comipile.php' in the config folder?Badmus Taofeeq
here : /var/www/laravel/bootstrap/cache/compiled.phpFilip Koblański
@FilipKoblański Thanks. but I still have the same error after running compose update. Why did you suggest regenerating the compiled.php file, hopefully, I can use in your explanation that will assist me in fixing the error.Badmus Taofeeq

1 Answers

0
votes

This reply helped me solved it. https://www.digitalocean.com/community/questions/error-reflectionexception-class-app-http-controller-stack-trace

Here is the answer..

" Based on the fact that this code worked properly on your build system but not on your droplet lets work under the assumption that this error is caused by a difference in the environment and not the code itself.

Without having this narrowed down to just one of those two functions there are a few possibilities.

Mail PHP's mail functionality requires you have a local MTA on your system. Doing apt-get install postfix or apt-get install sendmail would meet those requirements and allow PHP applications to send emails. Image - image manipulation in PHP usually requires additional libraries such as php7.0-gd or php7.0-imagick which do the heavy lifting. You can install these with apt-get install php7.0-imagick php7.0-gd."