PHP7.3是较新版本的PHP,不过有些问题在其上仍在存在,比如它不再支持OpenSSL v1.1.0及更高版本在CURL中使用SSL/TLS协议的默认选项。若您需要使用PHP7.3中的CURL进行HTTP请求,也需要确保您的OpenSSL库版本不高于OpenSSL v1.0.2。如果你的OpenSSL版本过高而且不能降级,那么你需要通过其他方式来满足你的HTTP请求需求。
以下是一些可用的替代方法:
使用GuzzleHttp Package代替PHP CURL
GuzzleHttp是PHP内的一个HTTP客户端,提供API来发送多个请求。你可以通过Composer包管理器将其添加到你的项目中。以下是一个简单的示例:
首先,在你的项目中要求GuzzleHttp:
require_once 'vendor/autoload.php';
use GuzzleHttp\Client;
// 创建一个新的GuzzleHttp客户端
$client = new Client();
接下来,你可以使用GET请求并接收响应:
$response = $client->request('GET', 'https://api.example.com');
echo $response->getBody();
对于POST请求
$response = $client->request('POST', 'https://api.example.com/submit', [
'form_params' => [
'field_name' => 'abc'
]
]);
echo $response->getStatusCode();
使用file_get_contents()代替CURL
如果你并不进行复杂的HTTP请求,可以使用file_get_contents()函数。这个函数可以将文件内容读入字符串中,包括http://和https://协议。以下是一个简单的示例:
$response = file_get_contents('https://api.example.com');
echo $response;
使用stream_context_create()代替CURL
用stream_context_create()函数也可以创建一个上下文,HTTP请求使用请求头,数据等请求选项。以下是一个简单的示例:
$opts = [
"http" => [
"method" => "GET",
"header" => "User-Agent: PHP\r\n"
]
];
$context = stream_context_create($opts);
$result = file_get_contents("https://api.example.com", false, $context);
echo $result;
总结
PHP7.3中它不再支持OpenSSL v1.1.0及更高版本在CURL中使用SSL/TLS协议的默认选项,不过我们可以使用GuzzleHttp Package、file_get_contents()函数或stream_context_create()函数解决这个问题。在使用GuzzleHttp时,你将需要在你的项目中引入GuzzleHttp库文件,并可以使用GET/POST等方式发送HTTP请求。在使用file_get_contents()时,可以将需要请求的URL作为参数传递给它,并接收响应。在使用stream_context_create()时,你可以使用HTTP选项参数来设置请求头各种它它它选项,然后通过file_get_contents()函数获取响应。
无论您使用哪种方法,都可以成功完成HTTP请求,这里推荐使用GuzzleHttp Package,因为它支持所有HTTP请求类型,是更灵活的选择。