관리 메뉴

웹개발자의 기지개

[PHP] OUTBOUND 443 가능 여부 확인하기 - discord 알림메세지 허용 본문

PHP

[PHP] OUTBOUND 443 가능 여부 확인하기 - discord 알림메세지 허용

웹개발자 워니 2026. 2. 16. 03:44

 

discord 등으로 알림 메세지 등을 보낼때, 

본서버가 outbound 443 이 가능해야 정상적으로 curl 메세지 발송이 가능하다.

 

이를 확인할 수 있는 소스를 정리하였다.

 

막혀있다면 방화벽에서 

outbound 443 을 허용토록 하면 되겠다.

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
<?
header('Content-Type: text/plain; charset=utf-8');
 
$host = "discord.com";   // 또는 google.com, api.github.com 등
$port = 443;
$timeout = 5;
 
$start = microtime(true);
$fp = @fsockopen("ssl://".$host$port$errno$errstr$timeout);
$elapsed = round((microtime(true- $start* 1000);
 
if ($fp) {
    fclose($fp);
    echo "OUTBOUND 443 가능\n";
    echo "Host: {$host}:{$port}\n";
    echo "연결시간: {$elapsed}ms\n";
else {
    echo "❌ OUTBOUND 443 실패 (차단/네트워크/DNS/SSL 문제 가능)\n";
    echo "Host: {$host}:{$port}\n";
    echo "에러번호: {$errno}\n";
    echo "에러내용: {$errstr}\n";
    echo "소요시간: {$elapsed}ms\n";
}
 
?>
cs

 

 

PHP7 - 접속 가능여부 확인

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
<?
header('Content-Type: text/plain; charset=utf-8');
 
$url = "https://discord.com/";
$ch = curl_init($url);
 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_TIMEOUT, 8);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 5);
 
$res = curl_exec($ch);
$err = curl_error($ch);
$info = curl_getinfo($ch);
curl_close($ch);
 
if ($res !== false) {
    echo "cURL HTTPS(443) 접속 성공\n";
    echo "HTTP CODE: ".$info['http_code']."\n";
    echo "총시간: ".round($info['total_time']*1000)."ms\n";
else {
    echo "❌ cURL HTTPS(443) 접속 실패\n";
    echo "에러: ".$err."\n";
    echo "참고 HTTP CODE: ".($info['http_code'] ?? 'N/A')."\n";
}
?>
cs

 

 

PHP5 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
<?
header("Content-Type: text/plain; charset=utf-8");
 
$url = "https://discord.com/";
 
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_TIMEOUT, 8);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 5);
 
// SSL 인증서 검증 (구버전 환경에서 문제 발생 시 임시 비활성화 가능)
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 2);
 
$response = curl_exec($ch);
 
$error  = curl_error($ch);
$errno  = curl_errno($ch);
$info   = curl_getinfo($ch);
 
curl_close($ch);
 
if ($response !== false) {
 
    echo "=============================\n";
    echo "cURL HTTPS(443) 접속 성공\n";
    echo "=============================\n";
    echo "HTTP CODE : " . $info['http_code'] . "\n";
    echo "TOTAL TIME: " . round($info['total_time'* 1000) . " ms\n";
 
else {
 
    echo "=============================\n";
    echo "❌ cURL HTTPS(443) 접속 실패\n";
    echo "=============================\n";
    echo "에러번호 : " . $errno . "\n";
    echo "에러내용 : " . $error . "\n";
 
}
?>
 
cs

 

 

Comments