我有一個網絡應用程序,可以對不同的站點進行curl 調用以獲取數據。由于我的網絡空間提供商(ionos)對服務器進行了一些更改,curl 調用不再起作用。我的卷曲調用如下所示:$ch = curl_init();curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);curl_setopt($ch, CURLOPT_URL, $link);curl_setopt($ch, CURLOPT_HEADER, false);curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);$sResult = curl_exec($ch);curl_close($ch);它不起作用。$s結果為空。我更改了代碼并嘗試了$test = file_get_contents($link);這給了我錯誤:PHP Warning: file_get_contents(): SSL operation failed with code 1. OpenSSL Error messages:error:141A318A:SSL routines:tls_process_ske_dhe:dh key too small我的curl 調用或file_get_contents 調用中是否缺少某些內容?
4 回答

ABOUTYOU
TA貢獻1812條經驗 獲得超5個贊
對于此錯誤,通常的建議是將 /etc/ssl/openssl.cnf 中的“CipherString”參數設置為“DEFAULT:@SECLEVEL=1”。
在 PHP 中,您可以使用以下方法實現相同的目的curl_setopt()
:
curl_setopt($ch,?CURLOPT_SSL_CIPHER_LIST,?'DEFAULT@SECLEVEL=1');
這是比編輯 openssl.cnf 更好的解決方案,因為它允許您放松僅針對一個特定調用(而不是系統范圍)的安全性。

大話西游666
TA貢獻1817條經驗 獲得超14個贊
如果您使用 file_get_contents() 函數,則效果很好
$context=array(
"ssl"=>array(
'ciphers' => 'DEFAULT:!DH'
),
);
$json = file_get_contents($url, false, stream_context_create($context));

繁星coding
TA貢獻1797條經驗 獲得超4個贊
我在curl 命令行上收到此錯誤。
卷曲請求
curl -k --request POST --url 'https://abc.com.pk/token/api?grant_type=client_credentials' --header 'Authorization: Basic a0NiZXNMTXFlJBY1lBQjJINmtqWVFh' --ciphers DEFAULT@SECLEVEL=1
解決方案:
--ciphers DEFAULT@SECLEVEL=1
- 4 回答
- 0 關注
- 285 瀏覽
添加回答
舉報
0/150
提交
取消