Saya telah menulis kode sederhana ini:
$ch = curl_init();
//Set options
curl_setopt($ch, CURLOPT_URL, "http://www.php.net");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$website_content = curl_exec ($ch);
Dalam kasus saya $website_content
datang sebagai false
. Adakah yang bisa menyarankan / menasihati sesuatu yang mungkin salah?
curl_error()
untuk detail kesalahan dan posting ini di sini.curl_error()
terungkap?Jawaban:
Kesalahan pengecekan dan penanganan adalah teman programmer. Periksa nilai yang dikembalikan dari inisialisasi dan pelaksanaan fungsi cURL.
curl_error()
dancurl_errno()
akan berisi informasi lebih lanjut jika terjadi kegagalan:* Buku
curl_init()
manual menyatakan:Saya telah mengamati fungsi untuk kembali
FALSE
saat Anda menggunakan$url
parameternya dan domain tidak dapat diselesaikan. Jika parameter tidak digunakan, fungsi tersebut mungkin tidak akan pernah kembaliFALSE
. Bagaimanapun, selalu periksa, karena manual tidak dengan jelas menyatakan apa sebenarnya "kesalahan" itu.sumber
curl_exec
pengembalian FALSE. - Curl Verbose Mode dalam contoh PHPDalam kasus saya, saya perlu mengatur
VERIFYHOST
danVERIFYPEER
kefalse
, seperti ini:sebelum panggilan ke
curl_exec($ch)
.Karena saya bekerja di antara dua lingkungan pengembangan dengan sertifikat yang ditugaskan sendiri. Dengan sertifikat yang valid, Anda tidak perlu menyetel
VERIFYHOST
danVERIFYPEER
kefalse
karenacurl_exec($ch)
metode ini akan berfungsi dan mengembalikan respons yang Anda harapkan.sumber
Ini terjadi pada saya kemarin dan dalam kasus saya adalah karena saya mengikuti manual PDF untuk mengembangkan beberapa modul untuk berkomunikasi dengan API dan saat menyalin tautan langsung dari manual, untuk beberapa alasan aneh,
hyphen
dari tautan yang disalin berada di tempat yang berbeda. pengkodean dan karenanyacurl_exec()
selalu kembalifalse
karena tidak dapat berkomunikasi dengan server.Saya butuh beberapa jam untuk akhirnya memahami perbedaan karakter di bawah ini:
Setiap kali saya mencoba mengakses tautan langsung dari browser, tautan itu diubah menjadi sesuatu seperti
https://www.xn--eexample-0m3d.com/api
.Tampaknya bagi Anda bahwa keduanya sama tetapi jika Anda memeriksa pengkodean di
hyphens
sini, Anda akan melihat bahwa yang pertamahyphen
adalah karakter unicode U + 2010 dan yang lainnya adalah U + 002D .Semoga ini bisa membantu seseorang.
sumber