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

Posted

技术标签:

【中文标题】Laravel 在生产服务器(nginx)上抛出 ReflectionException【英文标题】:Laravel throwing ReflectionException on production server (nginx) 【发布时间】:2017-01-17 07:53:13 【问题描述】:

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

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

$image 是从 post 请求中得到的图像。

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

$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$ 堆栈跟踪: #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【内部函数】: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【内部函数】:Illuminate\Foundation\Http\Middleware\CheckForMaintenanceMode$ #11 /var/www/laravel/bootstrap/cache/compiled.php(9963): call_user_func_array(Array, A$ #12【内部函数】:Illuminate\Pipeline\Pipeline->Illuminate\Pipelineclosure(O$ #13 /var/www/laravel/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php(32):$ #14【内部函数】:Illuminate\Routing\Pipeline->Illuminate\Routingclosure(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 主要

【问题讨论】:

尝试删除compiled.php并运行composer update @FilipKoblański 感谢您的快速回复。是配置文件夹中的“comipile.php”吗? 这里:/var/www/laravel/bootstrap/cache/compiled.php @FilipKoblański 谢谢。但运行撰写更新后我仍然有同样的错误。你为什么建议重新生成compiled.php文件,希望我可以在你的解释中使用它来帮助我修复错误。 【参考方案1】:

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

这就是答案..

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

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

邮件 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 安装这些。”

【讨论】:

链接可能很快就会过期,所以请将答案添加到您的帖子中并将其标记为已接受,这将对其他人有所帮助。

以上是关于Laravel 在生产服务器(nginx)上抛出 ReflectionException的主要内容,如果未能解决你的问题,请参考以下文章

Laravel 5.3 Passport - Vue 错误:评估表达式时出错

Mongoose 在 Apollo-Express 服务器上抛出错误 ECONNREFUSED

Mono 在 Ubuntu 上抛出 OutOfMemoryException 而不是 OSX 或 Windows

Phonegap 的 FileTransfer.upload() 在 Android 上抛出错误代码 3

wcf在android客户端帖子上抛出错误

POST 方法在 npm http-server 上抛出错误 405