iT邦幫忙

0

PHP5.3.0 crul接收HTTPS的回傳值

在本地端用PHP7.2.1
用本地的版本下可以成功的對HTTPS做傳接值
但一傳到線上卻失敗
線上的版本是5.3.0
新手嫩嫩不知道是不是版本差異的問題所以導致無法正常傳接值

本地端版本:
https://ithelp.ithome.com.tw/upload/images/20190803/20117765b0J4qUzHsy.jpg
https://ithelp.ithome.com.tw/upload/images/20190803/20117765qcyCLXhSx0.jpg

線上端版本:
https://ithelp.ithome.com.tw/upload/images/20190803/20117765ni1expNWWM.jpg
https://ithelp.ithome.com.tw/upload/images/20190803/20117765z0m7d9Tuqi.jpg

程式碼:

    function send_curl($url,$post){
		$ch = curl_init();
		curl_setopt($ch, CURLOPT_URL, $url);
		curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
		curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);
		// curl_setopt($ch, CURLOPT_POST, 1);
		curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'POST');
		curl_setopt($ch, CURLOPT_POSTFIELDS, $post);
		curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
		curl_setopt($ch, CURLOPT_HTTPHEADER, array(
			"Content-Type: application/json"
		));
		$result = curl_exec($ch);
		curl_close($ch);
		return $result;
	}

新手第一次發文,請別太大力鞭QQ

<-- 以下為回文 因為還在新手訓練無法回復QQ -->

更新於 2019/08/03 17:38

他連log都不給我....
完全沒有消息QQ
毫無頭緒找起問題

dragonH iT邦高手 1 級 ‧ 2019-08-03 16:44:20 檢舉
在線上端看錯誤 log 是什麼吧

話說通常是要用同版本吧

同版本不同設定都有可能有問題

更何況你還是不同版本
你這個版本差太大

測試站是:win 10 + php7.2

線上版本:CentOS 5.x + php5.3

可以提醒你一點,線上版本的環境很舊了,

現在很多網站的SSL都升級到TLS 1.2了,

而CURL對於SSL的連線是依賴OpenSSL這個套件在處理的,

但TLS 1.2 要OpenSSL 1.0.1+才有支援

你的線上環境版本只到0.9.8K

2 個回答

0
小魚
iT邦高手 1 級 ‧ 2019-08-03 17:44:52

這版本也差太多了吧,
這就像你要拿 Win 10 的程式去 Win XP 執行一樣...
你覺得會不會有問題...

另外我不知道誰不給你Log,
可以考慮用try catch抓錯誤,
不過PHP很多錯誤是catch不到的...

另外如果要Debug,
可以把display_errors打開,
不過找到問題之後記得關掉.

0
vegalou
iT邦新手 4 級 ‧ 2019-08-03 19:57:46

版本歸版本,不是新的最好,舊的也不是肉腳,只是你不清楚新舊演進之間,所謂安全考量,POST的規範做了什麼修改。

你貼的是client端,應該貼server端,都把SSL verify關閉了,就算你用http POST,也應該不通。

建議在server端,以debug模式,先檢視POST上來的是什麼東西,php input, http raw, form post,如果你都不知道POST上來的是什麼東西,你覺得版上的人可以給你什麼意見?

5.3還在用、7.2也在用,不管新跟舊,能用好用就是好。
甲土豆 iT邦新手 5 級 ‧ 2019-08-06 10:58:22 檢舉

我推薦用新的做項目,除非你的項目太大,更新困難

我不騙你當你項目越做用大。你會發現 PHP 7 和 PHP 5 的效能差異是滿大的

我要發表回答

立即登入回答