file_get_contents(url): gagal membuka streaming

pemrograman


Halo semuanya;

Saya memiliki file php yang mendapatkan konten dari URL, saya menerima pesan kegagalan

Warning: file_get_contents(http://xxxxxx): failed to open stream: HTTP request failed! in xxxx.php on line xx

saya mencoba begitu banyak solusi online tetapi masih tidak berhasil. ini kodenya

$cryptpass = rawurlencode(crypt($pc['pcpassword']));
$url = "http://" . $pc['pcname']."/Reports/ReportList.php?&username={$pc['pcusername']}&cryptpass=$cryptpass&noredir=1";
$parsed_list = read_general_list($url, false);
C#
function read_general_list($url, $make_assoc = false)
    {
        $compressed_data = file_get_contents($url);
    }

$compressed_data selalu null dan menimbulkan kesalahan:

Peringatan: file_get_contents(http://xxxxxx): gagal membuka streaming: permintaan HTTP gagal! di xxxx.php pada baris xx

Tolong ada saran?

Solusi 1

Seperti yang tertulis dalam pesan kesalahan, aliran (URL) yang diminta tidak dapat dibuka. Ada banyak kemungkinan alasan untuk hal ini:
1. URL dasar buruk. $pc['pcname']

2. nama pengguna dan/atau kata sandi buruk
3. nama pengguna/kata sandi tidak memiliki izin di server
4. Sistem Anda tidak dapat menjangkau server (firewall, izin PHP, …)
4. …

Saya akan menggunakan strategi berikut untuk melakukan debug:
1. Buang $url dan tuliskan.
2. Gunakan browser dengan alat debug (misalnya Firefox/Firebug) dan coba akses URL tersebut.
3. Lihat header yang dikembalikan untuk melihat kesalahan apa yang dilaporkan server (jika ada).
4. Pikirkan mengapa kesalahan itu muncul…

Bersulang,
Petrus

Jika ini menjawab pertanyaan Anda, pilih dan tandai diterima.

Solusi 2

Maaf, saya tidak pernah memperbarui pertanyaan ini sepenuhnya. Mungkin jika ada yang masih mencari jawaban.

Ini berhasil bagi saya. Ini adalah fungsi yang setara dengan File_get_contents, tetapi dapat menangani data dalam jumlah besar. Saya menemukan solusi ini online.

function file_get_contents_curl($url) {
$ch = curl_init();
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); //Set curl to return the data instead of printing it to the browser.
curl_setopt($ch, CURLOPT_URL, $url);
$data = curl_exec($ch);
curl_close($ch);
return $data;
}

コメント

タイトルとURLをコピーしました