我很难过。
我正在使用Laravel的密码::提醒,这已经为我编写了,所以我没有改变任何内容:
try {
$reset = Password::remind($credentials);
} catch (Exception $e) {
throw new Exception($e->getMessage());
}
当我提交表单时,我收到以下异常:
Exception
Connection could not be established with host localhost [Connection refused #61]
指向我上面的抛出异常行
在我的app / config / mail.php文件中,我尝试了从邮件到sendmail,从localhost到smtp.gmail.com的所有内容 - 无论我在此配置文件中更改了什么,Laravel仍然认为它是localhost。甚至尝试了" / usr / sbin / sendmail -t -i"
我重新启动了apache和fpm - 错误没有改变。
当我尝试邮件(电子邮件,标题,消息)时 - 它工作得很好。当然,我的目标不仅仅是发送电子邮件,而是使用Laravel的密码::提醒功能,它会发送一封电子邮件,其中包含用户重置密码的链接。
我更改了/usr/local/etc/php/5.5/php.ini文件,包括smtp和smtp_port
我需要做什么,这在他们的文档中似乎是如此直接,并且没有其他人抱怨这个问题因为拒绝连接#61。还有其他连接遭到拒绝,他们与内置密码无关: :提醒。这让我疯了。
我正在运行fpm-nginx。
提前致谢
答案 0 :(得分:0)
为了安全起见任何配置问题,我建议您在Homestead这样的封闭环境中试用您的应用程序。这样,即依靠新的虚拟机,您可能能够确定它是否是您正在使用的不同应用程序(apache,php等)级别的配置问题。否则,您将不得不重新检查您的代码。您可以在此处找到有关Homestead的更多信息:http://laravel.com/docs/4.2/homestead
答案 1 :(得分:0)
好的,有几个配置必须到位,我发布这个答案,以防其他人使用Yosemite有这个问题。
首先,从我搜索错误"连接被拒绝#61"这通常与Korush上面提到的与数据库的连接有关。但是,如果我输入的电子邮件不是数据库的一部分,Laravel会返回一条消息,说明找不到这样的电子邮件,告诉我它已连接到数据库,从搜索的角度来看已输入的电子邮件。
但是,如果一个人没有" password_reminders"在他们的localhost数据库中的表,然后一个人会收到连接拒绝错误 - 确保你有这个用于Laravel在你的localhost db中使用:
CREATE TABLE password_reminders (
email VARCHAR(50) NOT NULL,
token VARCHAR(100) NOT NULL,
created_at TIMESTAMP
)
其次,Laravel可以使用您系统上的邮件服务器。就我而言,我正在使用Yosemite,它有" postfix"终端提供:
sudo postfix start
这是我的本地配置,允许Laravel使用" password_reminders" table,位于app / config / database.php:
'local' => array(
'driver' => 'mysql',
'host' => 'localhost',
'database' => 'yourdb',
'username' => 'yourusername',
'password' => 'yourpassword',
'charset' => 'utf8',
'collation' => 'utf8_unicode_ci',
'prefix' => '',
),
在app / config / mail.php中:
'driver' => 'smtp',
'host' => 'localhost',
'port' => 25,
'from' => array('address' => 'service@yourdomain.com', 'name' => 'Your Company'),
'encryption' => '',
'username' => null,
'password' => null,
'sendmail' => '/usr/sbin/sendmail -bs',
'pretend' => false,
我仍然需要弄清楚如何显示重定向和消息,但这适用于通过电子邮件发送重置密码的链接:
public function request()
{
$message = "";
$session = null;
$request = array('email' => Input::get('USER_EMAIL'));
Password::remind(Input::only('USER_EMAIL'), function($message)
{
$message->subject('Password Reminder');
});
if ($request == 'reminders.sent') {
$session = 'message';
$success = true;
$message = 'Email with further instruction has been sent to "' . Input::get('USER_EMAIL'). '".';
return Password::remind($request);
} elseif ($request == 'reminders.user') {
$session = 'error';
$success = false;
$message = 'Email Address: ' . Input::get('USER_EMAIL') . ' WAS NOT FOUND!';
return Password::remind($request);
}else{
$message = 'Not meeting either condition "' . Input::get('USER_EMAIL') . '".';
return Password::remind($request);
}
Session::flash($session, $message);
return Redirect::to('/').with($session, $message);
}
以下是与密码提醒相关的路线:
Route::get('password/reset', array(
'uses' => 'PasswordController@remind',
'as' => 'password.remind'
));
Route::post('password/reset', array(
'uses' => 'PasswordController@request',
'as' => 'password.request'
));
Route::get('password/reset/{token}', array(
'uses' => 'PasswordController@reset',
'as' => 'password.reset'
));
Route::post('password/reset/{token}', array(
'uses' => 'PasswordController@update',
'as' => 'password.update'
));
答案 2 :(得分:-1)
也许它正在尝试发送电子邮件,但它无效。