我在Laravel 4中有一个错误:
ErrorException(E_UNKNOWN)fgets():SSL读取操作超时
156. * @return string
157. *
158. * @throws Swift_IoException
159. */
160. public function readLine($sequence)
161. {
162. if (isset($this->_out) && !feof($this->_out)) {
163. $line = fgets($this->_out);
164. if (strlen($line) == 0) {
165. $metas = stream_get_meta_data($this->_out);
此错误指的是SendGrid。我的Laravel设置为默认设置:
laravel>app>config>mail.php
<?php
array(
'driver' => 'smtp',
'port' => 465,
'encryption' => 'ssl',
'sendmail' => '/usr/sbin/sendmail -bs',
)
如何解决?
(另请参阅:Laravel.io)
解决方案1
我找到了解决办法,但这不是最好的办法。对于测试,可以:)
当我把我的应用程序上传到云端时,我得到了错误。在域上,我已经关闭了SSL。在laravel>app>config>mail.php
中,我更改了这个:
<?php
array(
'driver' => 'smtp',
'port' => 25, //earlier: 465
'encryption' => '', //earlier: 'ssl'
//other settings
)
解决方案2
可能是PHP 5.4.33/5.5.17中的这个错误(链接)。您必须降级到5.4.32版本。那么它应该会起作用。
yum downgrade $(rpm -qa --qf "%{NAME}'n" | grep ^php | awk '{print $1"-5.4.32"}') -y
另请参见laravel.io.
解决方案3
解决方案3非常简单,关闭域上的所有SSL。
现在有了更新,另一个解决方案是将PHP升级到v5.18:
sudo apt-get update
sudo apt-get dist-upgrade
希望这能有所帮助。