| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 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 |
- 제어문
- Java
- Linux
- php
- 생성자
- 삼항연산자
- 작성순서
- 상속
- ifelse
- 외부접속 차단
- 자바
- 문제해결
- 프로그래머스
- URLRewrite
- HAVING
- system error 113
- 객체
- setter
- ServerHeader
- SQL
- 연산자
- for문
- IIS보안
- ParseError
- 오라클
- Join
- docker
- mixedcontent
- DB연결 문제
- getter
- Today
- Total
목록전체 글 (305)
CoDream
1. 들어가며 (문제 상황)기존에 운영 중인 구형 서버(PHP 7.2.18) 환경에서 HTML 테이블()을 그대로 밀어내어 .xlsx 확장자로 다운로드받는 방식을 사용하고 있었습니다. 하지만 이 방식은 엑셀 프로그램을 켤 때마다 "파일 형식 또는 파일 확장명이 잘못되어..."라는 지긋지긋한 경고창을 뿜어내며 사용자 경험을 해치고 있었습니다.이를 해결하기 위해 정석 엑셀 라이브러리인 PhpSpreadsheet를 도입하기로 결정했습니다. 하지만 두 가지 큰 암초를 만났습니다.보안 및 버전 충돌 위험: 최신 컴포저(Composer)로 설치 시 PHP 7.2는 구형 버전이라 보안 취약점 경고(security advisories)와 GD 라이브러리 유무 문제로 설치가 원천 차단됨.기존 시스템 마비 우려: 서버의 ..
안녕하세요! 오늘은 제 웹 프로젝트에 GitLab CI/CD를 이용해 배포 자동화를 구축하면서 겪었던 다사다난한 오류 해결 과정을 공유해 보려고 합니다. 간단할 줄 알았던 배포 설정이 저를 몇 시간 동안 괴롭혔는데요, 분명 저와 같은 문제를 겪는 분들이 계실 거라 생각합니다.1. 첫 번째 관문: rsync error (code 23) - 권한 문제의 시작가장 먼저 저를 반겨준 것은 rsync의 Permission denied 오류였습니다. 로그는 다음과 같았죠.rsync: delete_file: unlink(...) failed: Permission denied (13)rsync error: some files/attrs were not transferred (code 23)ERROR: Job faile..
오늘은 웹 서버를 운영할 때 기본적이면서도 중요한 보안 설정 중 하나인 IIS(인터넷 정보 서비스) 버전 정보 숨기기에 대해 알아보겠습니다.HTTP 응답 헤더에 포함된 Server: Microsoft-IIS/10.0 같은 정보는 해커에게 공격의 빌미를 제공할 수 있으므로 제거해 주는 것이 좋습니다. 가장 안전하고 추천되는 URL Rewrite 모듈을 이용한 방법을 단계별로 알아보겠습니다.왜 서버 버전을 숨겨야 할까?웹 서버의 종류와 버전이 외부에 노출되면, 해당 버전에 알려진 보안 취약점이 있을 경우 공격자는 그 약점을 바로 타겟팅할 수 있습니다. 예를 들어, 'IIS 10.0 버전에 특정 취약점이 발견되었다'는 정보가 있다면, 공격자는 이 정보를 이용해 우리 서버를 쉽게 공격할 수 있겠죠? 불필요한 정..
1단계: 크론탭(Crontab) 편집기 열기가장 먼저, PuTTY로 서버에 접속하여 아래 명령어로 스케줄 편집기를 엽니다. 앞으로의 모든 작업은 이 편집기 안에서 이루어집니다.Bash crontab -e2단계: 간단한 테스트 (크론 스케줄러 동작 확인)실제 스크립트를 등록하기 전에, 크론 스케줄러 자체가 정상적으로 동작하는지 확인하는 과정입니다.명령어: 아래 명령어를 편집기에 추가합니다. 매분마다 홈 디렉토리에 cron_test.txt 파일을 생성(또는 시간 갱신)합니다.Bash * * * * * /usr/bin/touch /home/username/cron_test.txt확인: 1~2분 후, ls -l /home/username/cron_test.txt 명령어로 파일이 생성되었는지 확인합니다. 파일이 ..
안녕하세요! 지난 3편까지의 여정을 통해 우리는 도커 환경 문제, 경로 문제, PHP 버전 호환성 문제까지 모두 해결했습니다. 드디어 스크립트가 아무런 오류 없이 처음부터 끝까지 실행되었습니다!하지만 로그에 찍힌 결과를 보며, 저는 '동작하는 코드'가 '좋은 코드'는 아니라는 사실을 깨달았습니다. 제 스크립트는 서버에 부담을 주는 시한폭탄과 같았습니다. 이번 마지막 편에서는 이 스크립트를 어떻게 더 안전하고 빠르게 만들었는지, '코드 리팩토링' 과정을 공유합니다.최종 보스: 안전하고 빠른 코드를 향하여스크립트가 동작은 했지만, 아래와 같은 심각한 문제점들을 안고 있었습니다.문제점 1: 데이터 무결성 문제 (안전성)제 코드는 while 루프 안에서 댓글 하나를 삭제하고, 부모글 정보를 바로 업데이트하는 식..
지난 2편에서는 PHP의 매직 상수 __DIR__를 이용해 크론잡의 고질적인 include 경로 문제를 해결했습니다.이제 모든 외부 환경 문제는 해결되었으니, 드디어 스크립트의 핵심 로직이 실행될 차례라고 생각했습니다.하지만 기쁨도 잠시, 또 다른 종류의 오류가 저를 맞이했습니다.3차 관문: 뜻밖의 복병, 낡은 PHP 버전경로 문제를 해결하고 크론잡이 다시 실행되기를 기다린 후 로그 파일을 열어보니, 이번엔 이런 오류가 찍혀있었습니다.PHP Parse error: syntax error, unexpected '[' in /project/edu_config/update_enrollments.php on line 15Parse error는 PHP가 코드를 아예 이해조차 하지 못했다는, 즉 문법이 틀렸다는 의..
지난 1편에서는 docker exec 명령어를 이용해 서버(Host)의 크론잡이 도커 컨테이너 안의 PHP를 실행하도록 만드는 데 성공했습니다.드디어 스크립트가 실행되는가 싶었지만, 기쁨도 잠시, 로그 파일에는 새로운 오류 메시지가 저를 기다리고 있었습니다.2차 관문: 경로의 미로, include가 실패하다docker exec로 스크립트를 실행하니 이번엔 스크립트 내부의 include가 실패했습니다.로그 파일에 찍힌 오류는 다음과 같았습니다.PHP Warning: include_once(./_common.php): failed to open stream: No such file or directory_common.php 파일이 없다는 이 메시지는 저를 또다시 혼란에 빠뜨렸습니다. 파일은 분명히 제자리에 ..
간단한 PHP 자동화 스크립트를 만들고, 리눅스 서버의 크론잡(Cron Job)에 등록하는 과정에서 겪었던 문제 해결기를 공유해 보려고 합니다. 단순해 보였던 이 작업이 서버 환경의 깊은 이해를 요구하는 여정이 될 줄은 몰랐습니다.저의 삽질과 해결 과정을 함께 따라가 보시죠. 🚀시작: 간단한 목표이번 프로젝트의 목표는 간단했습니다. "매월 말, 오래된 수강 기록을 자동으로 정리하자!"저는 금방 끝날 거라 생각하고 PHP로 데이터 정리 스크립트를 작성했습니다. 이제 서버 스케줄러(크론)에 등록해서 지정된 시간에 자동으로 실행되게만 하면 끝이었습니다.PuTTY로 서버에 접속해 crontab -e 명령어로 아래와 같이 스케줄을 등록했습니다. # 매일 새벽 2시 30분에 스크립트 실행30 2 * * * /us..
– GD 라이브러리 없이 썸네일 안 나올 때 대처법 (Docker 환경)그누보드를 설치한 뒤 게시판에 이미지를 첨부했는데, 썸네일이 안 보이더라.콘솔 로그나 PHP 로그엔 에러도 없고, 그저 no image만 표시됨.알고 보니... php-gd 확장이 설치되어 있지 않아서 생긴 문제였다.🛑 발생한 증상게시글에 이미지가 있어도 썸네일이 표시되지 않음get_list_thumbnail() 함수는 실행되지만 ['src'] 값이 없음style.css나 권한 문제인 줄 알고 한참 헤맴php -m | grep gd 명령어로 GD 모듈 미설치 확인🔍 원인 분석그누보드에서 썸네일 생성은 내부적으로 GD 확장을 사용하는데,Docker 기반의 컨테이너에선 php-gd가 빠져있었음.해당 컨테이너는 PHP 7.0 기반의 D..
🔧 문제 상황그누보드5 기반의 웹사이트를 Docker 환경에서 운영하던 중,index.php, view_image.php 등의 PHP 파일이 정상적으로 출력되지 않고 이미지 썸네일이 보이지 않는 문제가 발생했다.🧪 진단PHP 실행은 되지만 이미지 썸네일 출력 안 됨get_list_thumbnail() 함수 확인 → GD 확장 필요php -m | grep gd 결과 없음 → GD 미설치⚙️ 서버 환경항목정보OSDebian 9 (Stretch) (Docker 기반)PHP7.0.33 (FPM)Web ServerNginxCMS그누보드5 🛠️ 설치 준비: APT 저장소 만료 해결Debian 9는 현재 [EOL(지원 종료)] 상태라 기본 저장소 접근에 오류가 발생함.이 경우 다음 설정으로 만료된 서명과 무서명..