Cara menggunakan php openssl

Di dalam PHP, tersedia function untuk melakukan parsing data XML yang berasal dari situs tertentu dengan mudah . Function tersebut adalah simplexml_load_file(). Penggunaan dari function ini cukup mudah yaitu tinggal tuliskan saja target URL nya di dalam parameter function tersebut.

Namun, terkadang di balik kemudahan penggunaan function simplexml_load_file() muncul juga masalah yaitu adanya Error OpenSSL ketika proses parsingnya. Bagaimana cara mengatasinya? artikel ini akan membahasnya secara jelas.

Seperti yang telah dijelaskan sebelumnya bahwa penggunaan function simplexml_load_file() untuk proses parsing xml dari situs tertentu cukup mudah. Sebagai contoh misalnya diberikan script berikut ini yang mencoba memparsing data XML dari situs w3schools.com:

<?php
$dataXML = simplexml_load_file("https://www.w3schools.com/xml/note.xml");
print_r($dataXML);
?>

Output hasil parsing script di atas adalah

SimpleXMLElement Object
(
    [to] => Tove
    [from] => Jani
    [heading] => Reminder
    [body] => Don't forget me this weekend!
)

Namun, terkadang proses parsing XML dengan function simplexml_load_file() seperti di atas tidak berjalan alias terdapat error, yaitu:

Warning: simplexml_load_file() [function.simplexml-load-file]: SSL operation failed with code 1. OpenSSL Error messages: error:14094410:SSL routines:SSL3_READ_BYTES:sslv3 alert handshake failure in …

Biasanya error di atas muncul ketika menggunakan PHP versi lama dan situs yang menjadi target menggunakan protokol https://. Kemungkinan besar error tersebut disebabkan adanya permasalahan pada konfigurasi certificate SSL yang ada di PHP nya.

Lantas, bagaimana solusinya? Solusinya adalah dengan menggunakan CURL terlebih dahulu untuk membaca data XML. Data XML yang dibaca dengan CURL ini masih dalam format string. Selanjutnya string XML tersebut barulah diparsing menggunakan simplexml_load_string();

Mengapa menggunakan CURL untuk membaca data XML nya? Ya.. karena di dalam CURL kita bisa mensetting supaya tidak ada proses verifikasi SSL nya yang menjadi sebab munculnya error di atas.

Berdasarkan ide di atas, perhatikan contoh implementasinya berikut ini!

<?php
// target url data xml nya
$url = "https://...";
// setting curl
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
// menonaktifkan proses verifikasi SSL
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
// baca data xml dalam bentuk string
$xmlresponse = curl_exec($ch);
// proses parsing xml
$xml=simplexml_load_string($xmlresponse);
// menampilkan struktur hasil parsing
print_r($xml);
?>

Berdasarkan pengalaman pribadi, teknik di atas cukup ampuh sebagai alternatif cara dari proses parsing xml dengan simplexml_load_file(), dan… alhamdulillaah terbukti sukses.

Semoga tip/trik ini dapat membawa manfaat bagi yang mengalami masalah serupa seperti yang telah dijelaskan di atas.

Bagikan artikel ini jika bermanfaat !


Seputar Instalasi

cara menghilangkan error (openSSL dan intl) pada saat instalasi moodle 2.1.1 ke xampp 1.7.4

  • ◄ Dataroot location is not secure
  • type moodle ►

setelah nyobain berhari hari instalasi moodle 2.1.1+ dengan xampp 1.7.4

ketemu error

openssl

intl

solusinya :

tambahkan php.ini (xampp\php\php.ini)

extension=php_openssl.dll
extension=php_intl.dll

copy  7 library file dengan format icu*36.dll

yaitu :

(icudt36.dll
icuin36.dll
icuio36.dll
icule36.dll
iculx36.dll
icutu36.dll
icuuc36.dll)

di (xampp\php\...) ke (xampp\apache\bin\...) setelah itu stop apache pada xampp 1.7.4 dan start lagi... kemudian refresh halaman instalasi moodle pada browser.

Seharusnya semua error sudah berstatus ok..

semoga bisa membantu teman teman sekalian

sungguh luar biasa, Working gan 

Cara menggunakan php openssl

buat tambahan, klo ada yg error pada Unicode, mungkin Penyortiran/Collation database pada MySQL bisa diganti menjadi UTF-8 jangan latin1

Penambahan script php tsb diletakkan di sebelah mana pak handoko?

di script php.ini banyak sekali scriptnya...

di xampp\php\php.ini
semoga memperjelas anda pak...

  • ◄ Dataroot location is not secure
  • type moodle ►