php

PHP 보안 예방 설정을 적용한 날 — 업로드 진행률을 끄고 확인한 것들

PHP 설정과 방패를 표현한 설명용 일러스트

2026년 10월 24일 오전, 운영 서버의 PHP 설정을 한 가지 바꿨다. 세션에 파일 업로드 진행 상황을 기록하는 기능을 끈 작업이다. 적용한 설정은 session.upload_progress.enabled = 0이다. 변경 후 PHP-FPM을 재시작하고 실제 웹 요청을 처리하는 환경에서 값이 반영됐는지 확인했다. 보안 작업을 끝내면 짧게 “패치 완료”라고 적기 쉽다. 하지만 오늘은 PHP 패키지를 새 버전으로 교체하지 않았다. 공식 공지에 …

PHP로 연간 주차를 계산해 전년도 데이터와 비교하기

PHP로 연간 주차를 계산해 전년도 데이터와 비교하기 - cover-ai-36D78E77-762A-476A-9DF6-9C268294B4F4

사용자가 선택한 연도의 데이터를 월별·주차별로 집계하고, 같은 기준으로 계산한 전년도 데이터와 그래프에서 비교해야 하는 경우가 있습니다. 예를 들어 주문이나 문의 건수를 주 단위로 표시하면 어느 시기에 데이터가 늘거나 줄었는지 한눈에 파악할 수 있습니다. 구현 자체는 복잡한 알고리즘이 아니지만, 연도마다 시작 요일과 마지막 요일이 다르고 윤년이 존재하기 때문에 날짜 경계를 명확하게 처리해야 합니다. 특히 단순히 주차 …

PHP 503에러 의도적으로 내기

<?php header('HTTP/1.1 503 Service Temporarily Unavailable'); header('Status: 503 Service Temporarily Unavailable'); header('Retry-After: 300');//300 seconds ?> PHP를 하면서 상태코드를 돌려줘야 할때가 있습니다. 그럴경우 파일은 있지만 접근권한을 제한하기 위한 코드가 필요해서 간단히 작성해 본것입니다. 503 코드로 돌려주기 때문에 서버의 기능이 잘못되었다고 판단을 하도록 하지만, 실제 이 파일은 그냥 모든것을 503으로 해서 접근을 하지 않았으면 해서 만든것입니다. 정상적인 …

단일 테이블에서 실시간 가동률 뽑기

단일 테이블에서 실시간 가동률 뽑기

일단 하기는 하였는데, 말이 안된다고 생각함! 문제가 뭐냐 하면은 모니터링 데이터를 제가 가공하는것이 아니라, 누군가 가동해 놓은 데이터를 가지고 실시간으로 전달해주는 행단위로 입력된것으로 데이터를 뽑습니다. 위와 같은 화면을 뽑기 위해서 처리해야 될 일은 많지만 이미 내가 만들지 않았고, 있는 정보를 가지고 처리를 해야 합니다. 위와 같은 형식으로 행단위로 엄청나게 쌓이기 시작합니다. 매일 몇초 단위로 데이터가 …

[PHP] 2차원 배열 정렬

DB에서 결과값을 가져올때 OrderBy를 할 수 있으면 더없이 좋지만 피치못할 상정으로 Query문을 수정할수가 없는 경우가 생깁니다. 이럴경우에 이미 만들어진 결과 값을 사용자에게 보여주기 전에 정렬를 해서 결과를 보여 주면 될것 같습니다. foreach ((array) $result as $key => $value) { $sort[$key] = $value['objNumber']; // 정렬를 위한 키값 } array_multisort($sort, SORT_DESC, $result); //array_multisort($sort, SORT_ASC, $result); 최근에 위 …

[PHP] 라인 Notify 기능

API 토큰 생성 사이트 : https://notify-bot.line.me/my/ 위 사이트에서 토큰을 발행 합니다. 아래의 기능으로 PHP 파일을 작성해서 데몬에 올려도 되고, cron에 작업해도 됩니다. $APIURL = "https://notify-api.line.me/api/notify"; $APIKey = "발행한 Key"; if ($imgUrl === null) { $postData = [ "message" => $msg ]; } else { $postData = [ "message" => $msg, "imageThumbnail" => $imgUrl, "imageFullsize" => …

[PHP] date, 날짜 포맷 설정

년도와 관련된 포멧  문자  설명  예 Y 4자리 숫자로 표시  1999, 2003 y 2자리 숫자로 표시 99, 03 o ISO-8601에 맞는 포맷으로 표시 (Y랑 같으나, ISO 규격에 맞는 W가 포함한 년을 사용) 1999, 2003 L 윤년 여부 윤년 : 1아닐경우 : 0 월과 관련된 포맷 문자  설명 예  F 달을 영어로 표시  January, December M …

[PHP] MySQL 데이터 출력

1. mysql_fetch_row()mysql_fetch_row()는 데이터를 0으로 시작하는 숫자형 인덱스 배열로 반환합니다. $row = mysql_fetch_row($result); echo $row[0]; 2. mysql_fetch_assoc()mysql_fetch_assoc()는 데이터를 문자형 연관 배열로 반환합니다.배열의 키 이름으로는 필드의 이름을 갖습니다. $row = mysql_fetch_assoc($result); echo $row['key']; 3. mysql_fetch_array()mysql_fetch_array()는 $result_type의 값에 따라 반환될 배열의 형태가 다릅니다. $result_type의 값으로는 아래와 같은 상수가 올 수 있으며, 기본값은 MYSQL_BOTH입니다.  - MYSQL_NUM: 이 상수를 사용하면 …

[PHP] 랜덤 문자열 생성

코딩시 가끔 무작위문자열이 필요할때가 있는데 시스템이나 내장함수에서 제공하는 방식은 원하는 기준으로 맞추기가 번거롭다.단순 비교만 사용되는 토큰이나 인증코드 등은 기본난수를 해시화해서 다루면 되지만 암호찾기 등으로 변경된 암호를 사용자에게 알릴 필요가 있을때에는 상황에 따라 정돈된 무작위문자열이 필요한 경우가 있다.랜덤문자를 원하는 조합으로 원하는 길이만큼 생성할 수 있도록 만들어 보았다. function get_random_string($type = '', $len = 10) { $lowercase …