Laravel SSL读取操作超时|Swift_IoException | PHP错误


Laravel SSL read operation timed out | Swift_IoException | PHP bug?

我在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

希望这能有所帮助。