10/10/2018, 10:04

Các pác giúp tớ cái thằng file_get_contents($url) này với.

Mình dùng hàm file_get_contents($url) để lấy nội dung của trang khác show lên trang của mình. Chạy local thì ok nhưng đưa lên host Window thì ko chạy được, Linux thì ok .
// code

$content = @file_get_contents($url);
if ($content) {
return true;
} else {
die('Ko thể đọc được nội dung file.');
}

Thì trên host Window (của tớ) hiện ra câu 'Ko thể đọc được nội dung file.'.

Cái host này có cái quái nữa là mình viết 1 hàm upload lên 1 file đến 1 thư mục chỉ định đã được set quyền write rồi mà vẫn ko up được nhưng thêm hàm is_writeable($dir) vào để kiểm tra thì nó lại up được.

Mong các pác chỉ giáo.
thuyduongcd viết 12:12 ngày 10/10/2018
Giúp cái gì nữa, host nó khóa file_get_content rồi chứ gì. Chắc xài host free đây
nguyenhoatq viết 12:16 ngày 10/10/2018
thank bạn Thuy Duong nhieu, host này là host mua đường hoàng ko phải free bạn ơi. Bạn cho mình hỏi làm cách nào để check nó có khóa file_get_content ko ?

http://thanhnien.hochiminhcity.gov.vn/info.php thông tin của host.
bka viết 12:07 ngày 10/10/2018
Được gửi bởi nguyenhoatq
thank bạn Thuy Duong nhieu, host này là host mua đường hoàng ko phải free bạn ơi. Bạn cho mình hỏi làm cách nào để check nó có khóa file_get_content ko ?

http://thanhnien.hochiminhcity.gov.vn/info.php thông tin của host.
bạn check kỹ lại xem . có thể site bạn get content đó nó thay đổi header nên không get đc, thử get url này xem http://vietnamnet.vn/

nếu không đc nữa thì do nó khóa cái function file_get_contents rồi. kêu thằng bán host nó mở cho. mình nghĩ host mua mà đi khóa cái này nữa thì cậu gặp phải củ chuối rồi

dùng Curl đi. thấy host cậu nó open đấy
nguyenhoatq viết 12:19 ngày 10/10/2018
Thank bạn, mình chạy localhost và host Linux được như vậy có nghĩa là đã khóa file_get_contents, làm thế nào mình có thể kiểm tra được nó khóa hay ko ? trong khi mình dùng $content = file_get_contents ($url); nó ko hề báo lỗi.
starrynighthn viết 12:10 ngày 10/10/2018
Đây là hàm mình dùng:
Code:
function curl($url,$vars = NULL,$method = 'GET',$fl = 0,$head = 0,$nobody = 0)
{
	$ch = curl_init();
	curl_setopt($ch, CURLOPT_URL,$url);
	curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
	if ($method == 'POST') {
		curl_setopt($ch, CURLOPT_POST, 1);
		curl_setopt($ch, CURLOPT_POSTFIELDS, $vars);
	}
	curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1");
	curl_setopt($ch, CURLOPT_FOLLOWLOCATION,$fl);
	curl_setopt($ch, CURLOPT_HEADER,$head);
	curl_setopt($ch, CURLOPT_NOBODY,$nobody);
	curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
	curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
   // curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie);
	//curl_setopt($ch, CURLOPT_COOKIEJAR, $cookie);
	ob_start();
	$result = curl_exec($ch);
	curl_close($ch);
	ob_end_clean();
	return $result;
}
thuyduongcd viết 12:20 ngày 10/10/2018
Bỏ cái '@' phía trước đi để xem nó báo lỗi gì. Nếu hàm này bị khóa thì nó sẽ xuất hiện thông báo lỗi kiểu như vầy:
warning: file_get_contents() [function.file-get-contents]: URL file-access is disabled in the server configuration in ....
nguyenhoatq viết 12:05 ngày 10/10/2018
thank bạn mình đã làm thế, ở trên mình có nói rồi mà hình như bạn chưa đọc kỹ.
thuyduongcd viết 12:17 ngày 10/10/2018
Nếu đã bỏ @ rồi vẫn không báo lỗi thì thử thê 2 dòng này vào đầu file php xem
Code:
error_reporting(E_ALL);
ini_set('display_errors', '1');
Nếu vẫn không thấy báo lỗi nghĩa là không có lỗi. Thử sửa lại code:
Code:
if ($content===false) {
   echo 'không thể mở file';
} elseif ($content=="") {
   echo 'Nội dung file không có gì;
} esle{
   echo $content;
}
Bài liên quan
0