216.73.216.217 TODAY : 4,551

PHP ์˜จ๋ผ์ธ ๊ฐ•์˜

 > 

PHP - ๊ณ ๊ธ‰

๐Ÿ“š PHP ๊ณ ๊ธ‰ - 7์ฃผ์ฐจ: ์„ฑ๋Šฅ ์ตœ์ ํ™” ๋ฐ ๋””๋ฒ„๊น… - 04 ๋กœ๊ทธ ๊ด€๋ฆฌ ๋ฐ ๋ชจ๋‹ˆํ„ฐ๋ง

๐Ÿ“š PHP ๊ณ ๊ธ‰ - 7์ฃผ์ฐจ: ์„ฑ๋Šฅ ์ตœ์ ํ™” ๋ฐ ๋””๋ฒ„๊น… - 04 ๋กœ๊ทธ ๊ด€๋ฆฌ ๋ฐ ๋ชจ๋‹ˆํ„ฐ๋ง
ํ‰์  10.0 ๋ผ์ด์„ผ์Šค free
์‚ฌ์šฉ์žํ‰์  10.0 ์šด์˜์ฒด์ œ
๋‹ค์šด๋กœ๋“œ 1 ํŒŒ์ผํฌ๊ธฐ 0
์ œ์ž‘์‚ฌ LUZENSOFT ๋“ฑ๋ก์ผ 2025-09-25 18:36:28
์กฐํšŒ์ˆ˜ 5
- ์„ค๋ช…

๋กœ๊ทธ ๊ด€๋ฆฌ ๋ฐ ๋ชจ๋‹ˆํ„ฐ๋ง์˜ ์ค‘์š”์„ฑ

uploadImage

์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ #์„ฑ๋Šฅ_์ตœ์ ํ™” ๋ฐ #๋””๋ฒ„๊น… ์— ์žˆ์–ด #๋กœ๊ทธ_๊ด€๋ฆฌ ์™€ #๋ชจ๋‹ˆํ„ฐ๋ง ์€ ํ•„์ˆ˜์ ์ธ ์š”์†Œ์ž…๋‹ˆ๋‹ค. ๋กœ๊ทธ๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ๋‚ด๋ถ€ ๋™์ž‘, ์˜ค๋ฅ˜ ๋ฐœ์ƒ, ์‚ฌ์šฉ์ž ํ™œ๋™, ์„ฑ๋Šฅ ์ง€ํ‘œ ๋“ฑ ์ˆ˜๋งŽ์€ ์ •๋ณด๋ฅผ ๊ธฐ๋กํ•˜๋Š” ์ค‘์š”ํ•œ ๋„๊ตฌ์ž…๋‹ˆ๋‹ค. ์ด ๋กœ๊ทธ๋“ค์„ ์ฒด๊ณ„์ ์œผ๋กœ ๊ด€๋ฆฌํ•˜๊ณ  ์‹ค์‹œ๊ฐ„์œผ๋กœ ๋ชจ๋‹ˆํ„ฐ๋งํ•จ์œผ๋กœ์จ, ์šฐ๋ฆฌ๋Š” ๋ฌธ์ œ ๋ฐœ์ƒ ์‹œ ์‹ ์†ํ•˜๊ฒŒ ์›์ธ์„ ํŒŒ์•…ํ•˜๊ณ , ์ž ์žฌ์ ์ธ ์„ฑ๋Šฅ ๋ณ‘๋ชฉ ํ˜„์ƒ์„ ๋ฏธ๋ฆฌ ์˜ˆ์ธกํ•˜๋ฉฐ, ๋ณด์•ˆ ์œ„ํ˜‘์„ ํƒ์ง€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๐Ÿ’ก



PHP ์—๋Ÿฌ ๋กœ๊ทธ ์„ค์ • ๋ฐ ํ™•์ธ

uploadImage

PHP๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ ๋‹ค์–‘ํ•œ ์ข…๋ฅ˜์˜ ์—๋Ÿฌ๋ฅผ ๊ธฐ๋กํ•˜๋Š” ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. php.ini ํŒŒ์ผ์—์„œ ๊ด€๋ จ ์„ค์ •์„ ์กฐ์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.


์ฃผ์š” php.ini ์„ค์ •


  • error_reporting: ์–ด๋–ค ์ข…๋ฅ˜์˜ PHP ์—๋Ÿฌ๋ฅผ ๋ณด๊ณ ํ• ์ง€ ์ •์˜ํ•ฉ๋‹ˆ๋‹ค. ์šด์˜ ํ™˜๊ฒฝ์—์„œ๋Š” E_ALL & ~E_NOTICE & ~E_DEPRECATED์™€ ๊ฐ™์ด ์„ค์ •ํ•˜์—ฌ ๋ถˆํ•„์š”ํ•œ ์•Œ๋ฆผ์„ ์ œ์™ธํ•˜๊ณ  ์ค‘์š”ํ•œ ์—๋Ÿฌ๋งŒ ๊ธฐ๋กํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค.

  • display_errors: ๋ธŒ๋ผ์šฐ์ € ํ™”๋ฉด์— ์—๋Ÿฌ๋ฅผ ํ‘œ์‹œํ• ์ง€ ์—ฌ๋ถ€๋ฅผ ๊ฒฐ์ •ํ•ฉ๋‹ˆ๋‹ค. ๋ณด์•ˆ ๋ฐ ์‚ฌ์šฉ์ž ๊ฒฝํ—˜์„ ์œ„ํ•ด ์šด์˜ ํ™˜๊ฒฝ์—์„œ๋Š” ๋ฐ˜๋“œ์‹œ Off๋กœ ์„ค์ •ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

  • log_errors: ์—๋Ÿฌ๋ฅผ ๋กœ๊ทธ ํŒŒ์ผ์— ๊ธฐ๋กํ• ์ง€ ์—ฌ๋ถ€๋ฅผ ๊ฒฐ์ •ํ•ฉ๋‹ˆ๋‹ค. ํ•ญ์ƒ On์œผ๋กœ ์„ค์ •ํ•˜์—ฌ ์—๋Ÿฌ ๊ธฐ๋ก์„ ํ™œ์„ฑํ™”ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

  • error_log: ์—๋Ÿฌ ๋กœ๊ทธ ํŒŒ์ผ์˜ ๊ฒฝ๋กœ๋ฅผ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค. ์ง€์ •ํ•˜์ง€ ์•Š์œผ๋ฉด ์›น ์„œ๋ฒ„์˜ ์—๋Ÿฌ ๋กœ๊ทธ(์˜ˆ: Apache์˜ error_log, Nginx์˜ error.log)์— ๊ธฐ๋ก๋ฉ๋‹ˆ๋‹ค.

Ini, TOML

; php.ini
error_reporting = E_ALL & ~E_NOTICE & ~E_DEPRECATED
display_errors = Off
log_errors = On
error_log = /var/log/php/php_error.log


์—๋Ÿฌ ๋กœ๊ทธ ํ™•์ธ


error_log์— ์ง€์ •๋œ ๊ฒฝ๋กœ์˜ ํŒŒ์ผ์„ ํ™•์ธํ•˜๋ฉด ๋ฐœ์ƒํ•œ PHP ์—๋Ÿฌ๋“ค์„ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Bash

tail -f /var/log/php/php_error.log



์›น ์„œ๋ฒ„ ๋กœ๊ทธ (Apache / Nginx)


PHP ์—๋Ÿฌ ๋กœ๊ทธ ์™ธ์—๋„ ์›น ์„œ๋ฒ„ ์ž์ฒด์˜ ๋กœ๊ทธ๋Š” ์ค‘์š”ํ•œ ์ •๋ณด๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.


Apache ๋กœ๊ทธ


  • access_log: ๋ชจ๋“  HTTP ์š”์ฒญ์— ๋Œ€ํ•œ ์ •๋ณด๋ฅผ ๊ธฐ๋กํ•ฉ๋‹ˆ๋‹ค (IP ์ฃผ์†Œ, ์š”์ฒญ ์‹œ๊ฐ„, URL, ์‘๋‹ต ์ฝ”๋“œ ๋“ฑ).

  • error_log: Apache ์›น ์„œ๋ฒ„ ์ž์ฒด์˜ ์—๋Ÿฌ, ๊ฒฝ๊ณ  ๋ฉ”์‹œ์ง€๋ฅผ ๊ธฐ๋กํ•ฉ๋‹ˆ๋‹ค.


Nginx ๋กœ๊ทธ


  • access.log: Apache์˜ access_log์™€ ์œ ์‚ฌํ•ฉ๋‹ˆ๋‹ค.

  • error.log: Nginx ์„œ๋ฒ„ ์ž์ฒด์˜ ์—๋Ÿฌ, ๊ฒฝ๊ณ  ๋ฉ”์‹œ์ง€๋ฅผ ๊ธฐ๋กํ•ฉ๋‹ˆ๋‹ค.

์ด๋“ค ๋กœ๊ทธ๋Š” ์›น ์„œ๋ฒ„ ์„ค์ • ํŒŒ์ผ์—์„œ ๊ฒฝ๋กœ๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.



์• ํ”Œ๋ฆฌ์ผ€์ด์…˜๋ณ„ ์ปค์Šคํ…€ ๋กœ๊น… (Monolog)

uploadImage

PHP ์—๋Ÿฌ ๋กœ๊ทธ๋งŒ์œผ๋กœ๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ๋ชจ๋“  ๋™์ž‘์„ ์ถ”์ ํ•˜๊ธฐ ์–ด๋ ต์Šต๋‹ˆ๋‹ค. ํŠน์ • ์ด๋ฒคํŠธ(์˜ˆ: ๋กœ๊ทธ์ธ ์‹œ๋„, ๊ฒฐ์ œ ์™„๋ฃŒ, ์ค‘์š”ํ•œ ๋ฐ์ดํ„ฐ ๋ณ€๊ฒฝ)๋‚˜ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋กœ์ง ๋‚ด๋ถ€์˜ ๊ฒฝ๊ณ /์ •๋ณด๋ฅผ ๊ธฐ๋กํ•˜๋ ค๋ฉด #์ปค์Šคํ…€_๋กœ๊น… ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค.

#Monolog ๋Š” PHP์—์„œ ๊ฐ€์žฅ ๋„๋ฆฌ ์‚ฌ์šฉ๋˜๋Š” ๋กœ๊น… ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์ž…๋‹ˆ๋‹ค. PSR-3 ํ‘œ์ค€์„ ์ค€์ˆ˜ํ•˜๋ฉฐ, ๋‹ค์–‘ํ•œ ํ•ธ๋“ค๋Ÿฌ(ํŒŒ์ผ, ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค, ์ด๋ฉ”์ผ, Syslog ๋“ฑ)๋ฅผ ํ†ตํ•ด ๋กœ๊ทธ๋ฅผ ๋ณด๋‚ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

PHP

<?php
require 'vendor/autoload.php'; // Composer๋กœ Monolog ์„ค์น˜ ํ›„

use MonologLogger;
use MonologHandlerStreamHandler;

// ๋กœ๊ฑฐ ์ƒ์„ฑ ๋ฐ ํ•ธ๋“ค๋Ÿฌ ์ถ”๊ฐ€
$log = new Logger('my_app');
$log->pushHandler(new StreamHandler('/var/log/my_app/app.log', Logger::WARNING));
$log->pushHandler(new StreamHandler('/var/log/my_app/debug.log', Logger::DEBUG));

// ๋‹ค์–‘ํ•œ ๋ ˆ๋ฒจ๋กœ ๋กœ๊ทธ ๊ธฐ๋ก
$log->warning('์‚ฌ์šฉ์ž ๋กœ๊ทธ์ธ ์‹คํŒจ: ' . $userId);
$log->error('๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์—ฐ๊ฒฐ ์˜ค๋ฅ˜!', ['exception' => $e]);
$log->info('๊ด€๋ฆฌ์ž ํŽ˜์ด์ง€ ์ ‘๊ทผ ์„ฑ๊ณต: ' . $adminId);
$log->debug('๋ณ€์ˆ˜ ๊ฐ’ ํ™•์ธ: ' . var_export($someVar, true));
?>



๋กœ๊ทธ ๋ชจ๋‹ˆํ„ฐ๋ง ๋ฐ ๋ถ„์„ ๋„๊ตฌ


๋ฐฉ๋Œ€ํ•œ ๋กœ๊ทธ ํŒŒ์ผ์„ ์ˆ˜๋™์œผ๋กœ ๋ถ„์„ํ•˜๋Š” ๊ฒƒ์€ ๋น„ํšจ์œจ์ ์ž…๋‹ˆ๋‹ค. ์ „๋ฌธ์ ์ธ #๋กœ๊ทธ_๋ชจ๋‹ˆํ„ฐ๋ง_๋„๊ตฌ ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋กœ๊ทธ๋ฅผ ์ค‘์•™์—์„œ ์ˆ˜์ง‘ํ•˜๊ณ , ์‹ค์‹œ๊ฐ„์œผ๋กœ ๋ถ„์„ํ•˜๋ฉฐ, ์ด์ƒ ์ง•ํ›„ ๋ฐœ์ƒ ์‹œ ์ž๋™์œผ๋กœ ์•Œ๋ฆผ์„ ๋ฐ›์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • ELK Stack (Elasticsearch, Logstash, Kibana):

    • Logstash: ๋‹ค์–‘ํ•œ ์†Œ์Šค(ํŒŒ์ผ, DB ๋“ฑ)์—์„œ ๋กœ๊ทธ๋ฅผ ์ˆ˜์ง‘ํ•˜๊ณ  ์ •๊ทœํ™”ํ•ฉ๋‹ˆ๋‹ค.

    • Elasticsearch: ์ˆ˜์ง‘๋œ ๋กœ๊ทธ๋ฅผ ์ €์žฅํ•˜๊ณ  ์ธ๋ฑ์‹ฑํ•˜์—ฌ ๋น ๋ฅธ ๊ฒ€์ƒ‰์„ ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•ฉ๋‹ˆ๋‹ค.

    • Kibana: Elasticsearch์— ์ €์žฅ๋œ ๋กœ๊ทธ ๋ฐ์ดํ„ฐ๋ฅผ ์‹œ๊ฐํ™”ํ•˜๊ณ  ๋Œ€์‹œ๋ณด๋“œ๋ฅผ ํ†ตํ•ด ์‹ค์‹œ๊ฐ„ ๋ชจ๋‹ˆํ„ฐ๋ง์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

  • Grafana: ๋‹ค์–‘ํ•œ ๋ฐ์ดํ„ฐ ์†Œ์Šค(Elasticsearch ํฌํ•จ)์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ ธ์™€ ๊ฐ•๋ ฅํ•œ ๋Œ€์‹œ๋ณด๋“œ์™€ ์•Œ๋ฆผ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

  • Prometheus & Grafana: ์„œ๋ฒ„ ๋ฐ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ๋ฉ”ํŠธ๋ฆญ(CPU, ๋ฉ”๋ชจ๋ฆฌ, ๋„คํŠธ์›Œํฌ, ์‘๋‹ต ์‹œ๊ฐ„ ๋“ฑ)์„ ์ˆ˜์ง‘ํ•˜๊ณ , Grafana๋ฅผ ํ†ตํ•ด ์‹œ๊ฐํ™”ํ•˜๋ฉฐ, ์•Œ๋ฆผ ๊ทœ์น™์„ ์„ค์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด๋Ÿฌํ•œ ๋„๊ตฌ๋“ค์„ ํ™œ์šฉํ•˜๋ฉด ๋กœ๊ทธ ๋ฐ์ดํ„ฐ๋ฅผ ๋‹จ์ˆœํ•œ ๊ธฐ๋ก์„ ๋„˜์–ด, ์‹ค์‹œ๊ฐ„ ์šด์˜ ์ƒํ™ฉ์„ ํŒŒ์•…ํ•˜๊ณ  ๋ฌธ์ œ ํ•ด๊ฒฐ์— ํ™œ์šฉํ•˜๋Š” ๊ฐ•๋ ฅํ•œ ์ž์›์œผ๋กœ ๋งŒ๋“ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.



๋งˆ์น˜๋ฉฐ


ํšจ์œจ์ ์ธ #๋กœ๊ทธ_๊ด€๋ฆฌ ๋ฐ #๋ชจ๋‹ˆํ„ฐ๋ง_์‹œ์Šคํ…œ ๊ตฌ์ถ•์€ ์•ˆ์ •์ ์ด๊ณ  ๊ณ ์„ฑ๋Šฅ์˜ ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์šด์˜ํ•˜๊ธฐ ์œ„ํ•œ ํ•„์ˆ˜์ ์ธ ํˆฌ์ž์ž…๋‹ˆ๋‹ค. PHP ์—๋Ÿฌ ๋กœ๊ทธ, ์›น ์„œ๋ฒ„ ๋กœ๊ทธ, ๊ทธ๋ฆฌ๊ณ  ์ปค์Šคํ…€ ๋กœ๊น…์„ ์ ์ ˆํžˆ ํ™œ์šฉํ•˜๊ณ , ์ „๋ฌธ ๋ชจ๋‹ˆํ„ฐ๋ง ๋„๊ตฌ๋ฅผ ํ†ตํ•ด ์ด๋ฅผ ํ†ตํ•ฉ ๊ด€๋ฆฌํ•จ์œผ๋กœ์จ, ์ž ์žฌ์ ์ธ ๋ฌธ์ œ๋ฅผ ์กฐ๊ธฐ์— ๋ฐœ๊ฒฌํ•˜๊ณ  ์‹ ์†ํ•˜๊ฒŒ ๋Œ€์‘ํ•  ์ˆ˜ ์žˆ๋Š” ๋Šฅ๋ ฅ์„ ๊ฐ–์ถ”๊ฒŒ ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๐Ÿ“ˆ



์†๋„, ์•ˆ์ •์„ฑ ํ™•์‹ค. ๋Š๊น€์—†์ด ๋น ๋ฅธ VPN. ๊ณ ํ’ˆ์งˆ ๋ธŒ์ดํ”ผ์—” ๋ฌด๋ฃŒ์ฒดํ—˜!

https://vpn.luzensoft.com