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
答案在这里..
" 基于此代码在您的构建系统上正常工作但在您的 Droplet 上无法正常工作这一事实,让我们假设此错误是由环境差异而非代码本身引起的。
如果不将其缩小到这两个功能之一,则有几种可能性。
Mail PHP 的邮件功能要求您的系统上有本地 MTA。执行 apt-get install postfix
或 apt-get install sendmail
将满足这些要求并允许 PHP 应用程序发送电子邮件。
图像 - PHP 中的图像处理通常需要额外的库,例如 php7.0-gd 或 php7.0-imagick 做繁重的工作。您可以使用 apt-get install php7.0-imagick php7.0-gd
安装这些。”
我刚刚在 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
答案在这里..
" 基于此代码在您的构建系统上正常工作但在您的 Droplet 上无法正常工作这一事实,让我们假设此错误是由环境差异而非代码本身引起的。
如果不将其缩小到这两个功能之一,则有几种可能性。
Mail PHP 的邮件功能要求您的系统上有本地 MTA。执行 apt-get install postfix
或 apt-get install sendmail
将满足这些要求并允许 PHP 应用程序发送电子邮件。
图像 - PHP 中的图像处理通常需要额外的库,例如 php7.0-gd 或 php7.0-imagick 做繁重的工作。您可以使用 apt-get install php7.0-imagick php7.0-gd
安装这些。”