login  Naam:   Wachtwoord: 
Registreer je!
 Forum

SSL: fatal protocol error (Opgelost)

Offline ikki007 - 07/01/2010 18:21 (laatste wijziging 07/01/2010 18:52)
Avatar van ikki007Gouden medailleGouden medaille

PHP ver gevorderde
Beste,

Ik heb onlangs een systeem ontwikkeld waarbij ook gebruikt wordt gemaakt van de iDEAL API uitgegeven door Mollie.
Deze maak gebruik van een SSL verbinding (ssl://secure.mollie.nl). Lokaal werkt het allemaal perfect, maar zodra ik het op de host upload krijg ik de warning:

Warning: fgets() [function.fgets]: SSL: fatal protocol error in ... line 160

In de phpinfo vind ik terug:

Registered Stream Socket Transports tcp, udp, unix, udg, ssl, sslv3, sslv2, tls

En zodra ik stream_get_transports() output krijg ik de volgende waardes terug:

Array ( [0] => tc [1] => ud [2] => uni [3] => ud [4] => ss [5] => sslv [6] => sslv [7] => tl )

Naar mijn idee zal dit toch gewoon horen te werken?
De betreffende code:

  1. <?php
  2. $hostname = str_replace('ssl://', '', $host); // $host heeft als waarde "ssl://secure.mollie.nl"
  3. $fp = @fsockopen($host, $port, $errno, $errstr);
  4. $buf = '';
  5.  
  6. if (!$fp)
  7. {
  8. $this->error_message = 'Kon geen verbinding maken met server: ' . $errstr;
  9. $this->error_code = 0;
  10.  
  11. return false;
  12. }
  13.  
  14. @fputs($fp, "POST $path HTTP/1.0\n");
  15. @fputs($fp, "Host: $hostname\n");
  16. @fputs($fp, "Content-type: application/x-www-form-urlencoded\n");
  17. @fputs($fp, "Content-length: " . strlen($data) . "\n");
  18. @fputs($fp, "Connection: close\n\n");
  19. @fputs($fp, $data);
  20.  
  21. while (!feof($fp)) {
  22. $buf .= fgets($fp, 128); // line 160
  23. }
  24.  
  25. fclose($fp);
  26. ?>


Ik had het liefst vanavond de boel online gegooid, maar dit is natuurlijk hartstikke vervelend.

Hopelijk heeft iemand een oplossing!


Mvg,
Jarno

edit: wel verbazend is dat stream_get_transports geen "ssl" returned.
edit2: ik vond het volgende op php.net:

"When using SSL, Microsoft IIS will violate the protocol by closing the connection without sending a close_notify indicator. PHP will report this as "SSL: Fatal Protocol Error" when you reach the end of the data. To work around this, the value of error_reporting should be lowered to a level that does not include warnings."

En tot mijn grote verbazing werkt de request wel gewoon, vervolgens de error reporting op E_ALL ^ E_WARNING gezet en het werkt allemaal naar behoren.

0 antwoorden

Gesponsorde links
Er zijn nog geen reacties op dit bericht.
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.217s