2014-11-23 16 views
7

ich ein Problem mit CSCart haben, ist es Mail über Google-Konto fehlschlägt sendet. Um zu überprüfen, ob es ein Problem in der Serverkonfiguration oder in CSCart der Skripte, die ich sauber Bibliothek PHPMailer installiert und versuchte Testnachricht mit Beispielskript zu senden. Ergebnis ist das gleiche:Warnung: stream_socket_enable_crypto(): SSL-Vorgang ist fehlgeschlagen mit Code 1

Warning: stream_socket_enable_crypto(): SSL operation failed with code 1. OpenSSL Error messages: error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed in [script path]/class.smtp.php on line 338  

OpenSSL Verbindung von Konsole funktioniert gut.

FreeBSD 10.0, Apache24, php5.6.

Ich konnte keine Informationen in Google finden und jetzt weiß ich auch nicht, in der Konfigurationsdatei das Problem Wurzel zu suchen.

+0

Sieht aus wie Sie strenge Sicherheits haben in PHP-Prüfungen aktiviert sind und die Verbindung, dass der Check versagt.Sie können entweder das cert oder die PHP.ini Einstellungen reduzieren. Dies gilt besonders für PHP 5.6. – Synchro

+0

Könnten Sie bitte beraten, welche Einstellungen ich in der php.ini einchecken soll? – Eugenijus

Antwort

4

Dies ist aufgrund der neuen verify-by-Standardrichtlinie in PHP 5.6. Es ist nicht in php.ini eingestellt; Es ist eine Option, die Sie bereitstellen, um Wrapper zu öffnen oder Kontexte zu streamen. Werfen Sie einen Blick auf die Optionen here, insbesondere verify_peer. PHPMailer können Sie diese params während der smtpConnect() Methode setzen, aber es gibt keine Option Optionen in die smtpSend() Methode zu übergeben, so dass Sie benötigen PHPMailer Unterklasse an, dass zu bekommen.

Sie können die Alternative einfacher finden - don't try to use a self-signed or unverifiable certificate.

0

in Laravel 5.4 ERROR

C: \ xampp \ htdocs \ itis_db \ ​​Anbieter \ Swiftmailer \ Swiftmailer \ lib \ classes \ Swift \ Transport \ StreamBuffer.php

und finden Sie heraus, diese Funktion innerhalb StreamBuffer.php

private function _establishSocketConnection() 

und kleben diese zwei Linien innerhalb dieser Funktion

$options['ssl']['verify_peer'] = FALSE; 
$options['ssl']['verify_peer_name'] = FALSE; 

und Ihren Browser neu geladen und versuchen Sie Ihr Projekt erneut auszuführen. Für mich habe ich wie folgt auf:

private function _establishSocketConnection() 
{ 
    $host = $this->_params['host']; 
    if (!empty($this->_params['protocol'])) { 
     $host = $this->_params['protocol'].'://'.$host; 
    } 
    $timeout = 15; 
    if (!empty($this->_params['timeout'])) { 
     $timeout = $this->_params['timeout']; 
    } 
    $options = array(); 
    if (!empty($this->_params['sourceIp'])) { 
     $options['socket']['bindto'] = $this->_params['sourceIp'].':0'; 
    } 

    $options['ssl']['verify_peer'] = FALSE; 
    $options['ssl']['verify_peer_name'] = FALSE; 

    $this->_stream = @stream_socket_client($host.':'.$this->_params['port'], $errno, $errstr, $timeout, STREAM_CLIENT_CONNECT, stream_context_create($options)); 
    if (false === $this->_stream) { 
     throw new Swift_TransportException(
      'Connection could not be established with host '.$this->_params['host']. 
      ' ['.$errstr.' #'.$errno.']' 
      ); 
    } 
    if (!empty($this->_params['blocking'])) { 
     stream_set_blocking($this->_stream, 1); 
    } else { 
     stream_set_blocking($this->_stream, 0); 
    } 
    stream_set_timeout($this->_stream, $timeout); 
    $this->_in = &$this->_stream; 
    $this->_out = &$this->_stream; 
} 

Hoffe, dass Sie dieses Problem lösen .....

1

Es gibt eine Menge configs ist, dass dieser Fehler kommen macht, aber häufiger ist es, dass Ihre Systemkonfiguration ist nicht richtig eingerichtet. Gehen Sie folgendermaßen vor, um es richtig auszuführen:

  1. Überprüfen Sie, ob Sie cacert.pem Datei für OPENSSL haben oder nicht. Wenn Sie dies nicht tun, laden Sie die richtige Version von der cacert.pem nach Ihrer PHP-Version und Config Datei php.ini als „2“

  2. Wenn Sie diese Datei haben, dann müssen Sie in Ihrem PHP-Lookup. Ini-Datei und sehen, ob es in es gesetzt wurde oder nicht. Dazu: Nachschlag für Zeile:

    openssl.cafile ="example address..\cacert.pem"

Wenn Sie die Zeile mit einer bestimmten Adresse finden, suchen Sie nach cacert.pem Datei in dieser Adresse, wenn Sie es finden, als es alles getan ist mit cacert.pem-Datei. Andernfalls sollten Sie die richtige Adresse verwenden.

Verwandte Themen