>  기사  >  백엔드 개발  >  PHP에서 포트 번호를 취소하는 방법(솔루션 분석)

PHP에서 포트 번호를 취소하는 방법(솔루션 분석)

PHPz
PHPz원래의
2023-04-06 09:14:50765검색

인터넷 기술의 지속적인 발전으로 인해 당사 웹사이트의 프런트엔드와 백엔드가 점점 더 복잡해지고 있습니다. 이 과정에서 많은 문제가 발생할 수 있습니다. 예를 들어, PHP를 사용하여 웹사이트에 접속할 때 포트 번호를 취소하려고 하는데, 이는 번거로운 문제가 될 것입니다. 하지만 걱정하지 마세요. 이 문제에 대한 해결책이 있습니다.

먼저 포트 번호의 역할을 이해해 봅시다. 포트 번호는 TCP/IP 프로토콜에서 한 쌍의 통신 세트로 형성된 엔드포인트 식별자이며 프로세스나 애플리케이션에서 특정 서비스를 식별하는 데 사용됩니다. 포트 번호는 일반적으로 0~65535 범위의 16비트 정수입니다.

브라우저에 URL을 입력하면 기본적으로 포트 80이 사용됩니다. 예를 들어, http://www.test.com을 입력하면 브라우저는 기본적으로 포트 80을 사용하고 http://www.test.com:80에 직접 액세스합니다. 모든 웹사이트에는 기본 포트 번호가 있습니다. 일반적으로 HTTP 프로토콜은 포트 80을 사용하고 HTTPS 프로토콜은 포트 443을 사용합니다.

PHP 프로그램에서 cURL을 사용하여 웹 사이트에 액세스하려고 하는데 웹 사이트가 비표준 포트 번호를 사용하는 경우(예: GitHub에 액세스할 때 비표준 포트 번호가 443인 경우) 설정해야 합니다. PHP의 포트 번호를 443으로 변경합니다. 그렇지 않으면 액세스가 기본 포트인 포트 80으로 리디렉션됩니다.

그렇다면 PHP에서 포트 번호를 취소하는 방법은 무엇일까요? 다음은 몇 가지 가능한 해결 방법입니다.

옵션 1: gethostbyname 함수 사용

cURL을 사용하여 웹 사이트에 액세스할 때 일반적으로 코드의 URL을 사용합니다. 예:

$url = "https://github.com";
$ch = curl_init($url);

포트 번호를 취소하려면 gethostbyname 함수를 사용하여 다음을 수행할 수 있습니다. URL을 IP 주소로 변환 :

$url = "https://github.com";
$ip = gethostbyname(parse_url($url, PHP_URL_HOST));
$ch = curl_init("https://$ip");

gethostbyname 함수를 사용하여 URL을 IP 주소로 변환하면 포트 번호가 취소됩니다. 그러나 IPv6 주소를 사용하는 경우 등 일부 환경에서는 이 기능이 실패할 수 있습니다.

옵션 2: stream_context_create 함수 사용

stream_context_create 함수를 통해 PHP 프로그램에서 컨텍스트 매개변수를 설정할 수 있습니다. 컨텍스트 매개변수를 수정하여 포트 번호를 취소할 수 있습니다.

다음은 샘플 코드입니다.

$url = "https://github.com";
$options = array(
    'ssl' => array(
        'verify_peer' => false,
        'verify_peer_name' => false,
        'allow_self_signed' => true,
        'peer_name' => parse_url($url, PHP_URL_HOST),
        'peer' => parse_url($url, PHP_URL_HOST) . ':443'
    )
);
$context = stream_context_create($options);
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
    'Content-Type: application/json'
));
curl_setopt($ch, CURLOPT_TIMEOUT_MS, 2000);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT_MS, 2000);
curl_setopt($ch, CURLOPT_VERBOSE, true);
curl_setopt($ch, CURLOPT_STDERR, fopen('php://output', 'w'));
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
$response = curl_exec($ch);

stream_context_create 함수를 사용하여 컨텍스트 매개변수를 생성하고, 피어 매개변수를 웹사이트의 호스트 이름과 포트 번호로 설정한 후 포트 번호를 취소합니다.

요약

PHP에서 포트 번호를 취소하는 방법은 여러 가지가 있습니다. 다음은 일반적인 방법 두 가지입니다. 실제 사용에서는 특정 상황에 따라 적절한 솔루션을 선택할 수 있습니다.

cURL을 사용하여 웹사이트에 액세스할 때 보안을 보장하려면 verify_peer 및 verify_peer_name 매개변수를 설정하는 것이 좋습니다. 이전 버전의 PHP를 사용하는 경우 더 나은 보안과 안정성을 위해 PHP 버전을 업그레이드하는 것이 좋습니다.

위 내용은 PHP에서 포트 번호를 취소하는 방법(솔루션 분석)의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.