| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 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 |
- getter
- 연산자
- Join
- 생성자
- 프로그래머스
- 자바
- mixedcontent
- 문제해결
- Java
- URLRewrite
- docker
- ServerHeader
- ifelse
- 상속
- setter
- php
- SQL
- 작성순서
- 제어문
- Linux
- ParseError
- HAVING
- 오라클
- system error 113
- for문
- DB연결 문제
- 외부접속 차단
- 삼항연산자
- IIS보안
- 객체
- Today
- Total
목록PHP (18)
CoDream
안녕하세요! 지난 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(지원 종료)] 상태라 기본 저장소 접근에 오류가 발생함.이 경우 다음 설정으로 만료된 서명과 무서명..
웹 개발이나 서버 설정 중 서브도메인에 밑줄(_)을 포함시켜서 사용한 경험이 있으신가요?예를 들어 my_app.example.com 같은 도메인을 만들고 웹서버에 적용했더니, 아래와 같은 에러가 발생할 수 있습니다:400 Bad RequestYour browser sent a request that this server could not understand.이 글에서는 이 문제가 왜 발생하는지, 어떤 표준을 위반하는 것인지, 그리고 어떻게 해결해야 하는지 자세히 정리해보겠습니다.✅ 문제 상황 요약도메인 설정: my_app.example.comApache 또는 Nginx 서버에 ServerName, ServerAlias 설정 완료HTTP 요청을 보냈지만, 브라우저 또는 curl에서 400 Bad Reque..
PHP 7.0 또는 그 이하 버전 기반의 Docker 이미지를 사용하다 보면 apt-get update나 apt-get install에서 아래와 같은 오류가 발생할 수 있습니다.E: Failed to fetch http://deb.debian.org/... 404 Not FoundW: The repository is not signed.이 오류는 Docker 이미지가 사용하는 Debian Stretch가 더 이상 공식 저장소에서 제공되지 않기 때문에 발생합니다.❗ 문제 요약php:7.0-fpm, php:5.6-fpm 같은 구버전 이미지는 Debian Stretch 또는 Jessie를 기반으로 합니다.이들은 현재 아카이브 저장소 (archive.debian.org) 로 이관되었고, 기본 저장소인 deb.d..
HTTPS 전환 후 로그인 버튼이 작동하지 않는다면?"$ is not defined" 오류의 원인과 해결 방법을 정리했습니다. 🧩 문제 상황SSL(HTTPS) 적용 이후, 로그인 페이지에서 버튼 클릭 시 아무런 반응이 없고, 브라우저 콘솔에서는 다음과 같은 에러 메시지가 발생했습니다:Uncaught ReferenceError: $ is not defined해당 오류는 자바스크립트에서 $ (jQuery 객체)를 사용하려 했지만, jQuery가 아직 로드되지 않았거나 아예 로드에 실패했을 때 발생합니다.🔍 원인 분석🔗 1. // 프로토콜 자동 감지 방식 사용기존에는 다음과 같이 jQuery를 로드하고 있었습니다:위처럼 // 형식으로 작성하면 브라우저가 자동으로 http: 또는 https:를 선택하게 됩..
정의Google OAuth 로그인 중 자주 발생하는 오류와 해결 방법을 정리했습니다.3줄 요약redirect_uri_mismatch 오류는 URI 불일치 문제"key must be a string when using hmac" 오류는 JWT_SECRET 문제API용 Socialite 사용 시 stateless() 메서드 필요예시 코드 및 해결법redirect_uri_mismatch 오류 해결Google Cloud Console에서 Redirect URI가 .env의 GOOGLE_REDIRECT_URI와 완전 일치하는지 확인HTTP/HTTPS, 경로, 슬래시 하나까지 꼼꼼히 체크JWT_SECRET 문제 해결JWT_SECRET=길고_복잡한_문자열_사용너무 짧거나 숫자만 있으면 안됨, 반드시 문자열Social..