file_get_contents(url): không mở được luồng

lập trình


Xin chào tất cả mọi người;

Tôi đang có một tệp php lấy nội dung từ một URL, tôi nhận được thông báo lỗi

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

tôi đã thử rất nhiều giải pháp trực tuyến nhưng nó vẫn không hoạt động. đây là mã

$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);
    }

$compression_data luôn rỗng và nó báo lỗi:

Cảnh báo: file_get_contents(http://xxxxxx): không mở được luồng: Yêu cầu HTTP không thành công! trong xxxx.php trên dòng xx

Bạn có gợi ý gì không?

Giải pháp 1

Như thông báo lỗi cho biết, không thể mở được luồng (URL) được yêu cầu. Có nhiều lý do có thể cho việc này:
1. URL cơ sở không hợp lệ. $pc['pcname']

2. tên người dùng và/hoặc mật khẩu không đúng
3. tên người dùng/mật khẩu không có quyền trên máy chủ
4. Hệ thống của bạn không thể truy cập được máy chủ (tường lửa, quyền PHP, …)
4. …

Tôi sẽ sử dụng chiến lược sau để gỡ lỗi:
1. Kết xuất url $ và viết nó ra.
2. Sử dụng trình duyệt có công cụ gỡ lỗi (ví dụ: Firefox/Firebug) và thử truy cập URL đó.
3. Nhìn vào các tiêu đề được trả về để xem máy chủ báo lỗi gì (nếu có).
4. Hãy nghĩ xem tại sao lỗi đó được trả về…

Chúc mừng,
Peter

Nếu điều này trả lời câu hỏi của bạn, hãy bỏ phiếu và đánh dấu nó được chấp nhận.

Giải pháp 2

Tôi xin lỗi, tôi chưa bao giờ cập nhật câu hỏi này một cách đầy đủ. Có thể nếu ai đó vẫn đang tìm kiếm câu trả lời.

Điều này đã làm việc cho tôi. Đây là chức năng tương đương với File_get_contents, nhưng có thể xử lý lượng lớn dữ liệu. Tôi tìm thấy giải pháp này trực tuyến.

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をコピーしました