将Web应用程序迁移到新服务器后,使用laravel发送电子邮件时抛出错误。它在以前的服务器上工作正常。
评论中编辑的相关错误说明:
[2018-01-25 13:31:10] production.ERROR:ErrorException:mkdir():否 这样的文件或目录 在/ var / www / html等/ jbservice /供应商/ swiftmailer / swiftmailer / lib中/ C lasses /雨燕/ KeyCach E /磁盘$ 堆栈跟踪:#0 [内部功能]: 照亮\基金会\引导\ HandleExceptions-> handleErro R(2, 'mkdir():没有成功...','/ var / www / html / j ...',273,数组)#1 的/ var / www / html等/ jbservice /供应商/ swiftmailer / swiftmailer / LIB / C lasses /夫特/ KeyCach E / DiskKeyCache.php(2 73): MKDIR( '/ TMP / 68d392a3e3 ...')
根据评论编辑的相关代码:
Mail::send('dashboard.emails.createticket', $data , function ($message)
use ($data) { $message->subject('New Ticket: ' . $data['subject'])
->to("atif@gmail.com")
->from('HERE COMES THE SENDER EMAIL'); });
答案 0 :(得分:1)
您可以查看日志。
如果它显示SwiftMailer正在尝试在默认的/ tmp文件夹中创建缓存:
要解决此问题,请在app / Providers / AppServiveProvider.php的boot()方法中更改TMPDIR环境变量。
/**
* Bootstrap any application services.
*
* @return void
*/
public function boot()
{
/**
* Somehow PHP is not able to write in default /tmp directory and SwiftMailer was failing.
* To overcome this situation, we set the TMPDIR environment variable to a new value.
*/
if (class_exists('Swift_Preferences')) {
\Swift_Preferences::getInstance()->setTempDir(storage_path().'/tmp');
} else {
\Log::warning('Class Swift_Preferences does not exists');
}
}
请确保Web服务器可以写入新的“tmp”文件夹位置。