Laravel 在生产服务器 (nginx) 上抛出 ReflectionException

Laravel throwing ReflectionException on production server (nginx)

我刚刚在 Digitalocean 上部署了我的应用程序。我的上传图片和发送电子邮件功能在我的本地服务器上运行良好,但在生产服务器上却无法运行。调试后发现是这两个问题

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

$image 是从 post 请求中获取的图像。

我的文件夹对web组有写入权限。所以我确定这不是权限问题。此外,我已经将保存行注释掉了,但我仍然收到错误消息。请帮忙。谢谢。这是我的控制器代码

$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));
    }

这是我的邮件控制器

    $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('badmustaofeeq@gmail.com');
        $message->subject($data['subject']);
    });
    Session::flash('success',' Email was sent successfully!');
    return redirect()->route('contact.get');
}

这是我的堆栈跟踪

[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

这个回复帮我解决了。 https://www.digitalocean.com/community/questions/error-reflectionexception-class-app-http-controller-stack-trace

答案在这里..

" 基于此代码在您的构建系统上正常工作但在您的 Droplet 上无法正常工作这一事实,让我们假设此错误是由环境差异而非代码本身引起的。

如果不将其缩小到这两个功能之一,则有几种可能性。

Mail PHP 的邮件功能要求您的系统上有本地 MTA。执行 apt-get install postfixapt-get install sendmail 将满足这些要求并允许 PHP 应用程序发送电子邮件。 图像 - PHP 中的图像处理通常需要额外的库,例如 php7.0-gdphp7.0-imagick 做繁重的工作。您可以使用 apt-get install php7.0-imagick php7.0-gd 安装这些。”