iT邦幫忙

0

PHP的CURL問題

  • 分享至 

  • twitterImage

10/26更新資料
主機的CPanel發生其他問題,原廠處理後這邊狀況居然一併解除了
不確定是否有關,不過狀況已排除,感謝各位大大的熱心回覆

10/21更新資料
測試curl同主機的其他網站,可以用文件流形式返回成功
但是不同主機的網站,相同返回值也無法用文件流形式返回
和主機商反應得到的回覆是
使用SSH可以ping到我們提供的網址IP,認為網路間沒有阻止
請問這樣的回覆有問題嗎?

主機商換了台主機,網站中使用curl的部分就全掛了
測試後發現問題在於將取得的值以文件流的形式返回時會出錯,但直接輸出就能顯示出網頁內容

<?php
	header("Content-Type:text/html; charset=big5");
	$ch = curl_init();
	curl_setopt($ch, CURLOPT_URL, "http://www.blueshop.com.tw/");
	curl_setopt($ch, CURLOPT_HEADER, false);
	//curl_setopt($ch, CURLOPT_TIMEOUT, 15);
	curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
	$re = curl_exec($ch);
	curl_close($ch);
	echo "[start]";
	echo $re;
	echo "[end]";
?>

這樣會顯示不出畫面,但只要把
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
這行註記掉,就能輸出網頁
請問是需要調整php.ini的設定嗎?

看更多先前的討論...收起先前的討論...
Franky Chen iT邦研究生 3 級 ‧ 2021-10-20 08:40:12 檢舉
CURLOPT_RETURNTRANSFER: true to return the transfer as a string of the return value of curl_exec() instead of outputting it directly.

xref: https://www.php.net/manual/en/function.curl-setopt.php
迷路 iT邦新手 2 級 ‧ 2021-10-20 09:10:32 檢舉
是的,我知道這條設定的用途
而且我需要這樣設定來取得的值,並對值進行分析和操作
提示:BIG5做文件流,碰到特殊字元就會出錯。
迷路 iT邦新手 2 級 ‧ 2021-10-20 17:42:04 檢舉
測試的目標網頁是big5
應該是不會有這方面的問題
而且原本的是utf-8
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 個回答

2
海綿寶寶
iT邦大神 1 級 ‧ 2021-10-20 10:08:19
最佳解答

網站中使用curl的部分就全掛了

有沒有看到Fatal error: Call to undefined function curl_init()訊息?
有的話要改 php.ini

curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
這行註記掉,就能輸出網頁

CURLOPT_RETURNTRANSFER的使用方式有以下兩種:
1.設為 1(True),不「顯示」內容而是存成變數
2.設為 0(False,預設值),直接將內容「顯示」出來
你看看自己要的是那一種
and 這跟 php.ini 沒有關係

另外
先前的問題如果已經解決
就選個最佳解答以進行結案的動作

迷路 iT邦新手 2 級 ‧ 2021-10-20 17:46:36 檢舉

1.沒有出現這條錯誤訊息,有的話通常就是沒有啟用的問題
2.我知道那邊的設定用途,我的意思是直接顯示可以開出畫面,但是改為存成變數的時候,得到的值是空值
3.已結案了,感謝提醒

我要發表回答

立即登入回答