Saya sedang menyiapkan pemrosesan kartu kredit dan perlu menggunakan solusi untuk CURL. Kode berikut berfungsi dengan baik ketika saya menggunakan server pengujian (yang tidak memanggil URL SSL), tetapi sekarang ketika saya mengujinya di server yang berfungsi dengan HTTPS, gagal dengan pesan kesalahan "gagal membuka aliran".
function send($packet, $url) {
$ctx = stream_context_create(
array(
'http'=>array(
'header'=>"Content-type: application/x-www-form-urlencoded",
'method'=>'POST',
'content'=>$packet
)
)
);
return file_get_contents($url, 0, $ctx);
}
php
curl
https
file-get-contents
James Simpson
sumber
sumber
Untuk mengizinkan https pembungkus:
php_openssl
ekstensi harus ada dan diaktifkanallow_url_fopen
harus disetel keon
Di file php.ini Anda harus menambahkan baris ini jika tidak ada:
sumber
Coba berikut ini.
sumber
Ini akan memungkinkan Anda untuk mendapatkan konten dari url apakah itu HTTPS
sumber
Ini mungkin karena server target Anda tidak memiliki sertifikat SSL yang valid.
sumber
Cukup tambahkan dua baris di file php.ini Anda.
extension=php_openssl.dll
allow_url_include = On
itu bekerja untuk saya.
sumber
allow_url_fopen
karena pertanyaan menyangkut pembukaan url, tidak termasuk.Saya mengalami kesalahan yang sama. Pengaturan
allow_url_include = On
diphp.ini
perbaiki untuk saya.sumber
HTTPS didukung mulai dari PHP 4.3.0, jika Anda telah mengumpulkan dukungan untuk OpenSSL. Selain itu, pastikan server target memiliki sertifikat yang valid, firewall mengizinkan koneksi keluar dan
allow_url_fopen
di php.ini disetel ke true.sumber
Dalam kasus saya, masalahnya adalah karena WAMP menggunakan php.ini yang berbeda untuk CLI dari Apache, jadi pengaturan yang Anda buat melalui menu WAMP tidak berlaku untuk CLI. Cukup modifikasi CLI php.ini dan berhasil.
sumber
Terkadang server akan memilih untuk tidak merespons berdasarkan apa yang dilihat atau tidak dilihatnya di header permintaan http (seperti agen pengguna yang sesuai). Jika Anda dapat terhubung dengan browser, ambil header yang dikirim dan tiru mereka dalam konteks streaming Anda.
sumber
Saya terjebak dengan https non fungsional di IIS. Diselesaikan dengan:
file_get_contents ('https ..) tidak mau dimuat.
edit php.ini dengan:
curl.cainfo = "C: \ Program Files \ PHP \ v7.3 \ extras \ ssl \ cacert.pem" openssl.cafile = "C: \ Program Files \ PHP \ v7.3 \ extras \ ssl \ cacert.pem"
akhirnya!
sumber
UNTUK MEMERIKSA APAKAH URL ATAS ATAU TIDAK
Kode dalam pertanyaan Anda dapat ditulis ulang menjadi versi yang berfungsi:
sumber