ThinkPHP 프레임워크 이해와 기본 사용법

ThinkPHP 소개 ThinkPHP는 PHP로 개발된 빠르고 간단한 객체 지향 경량 프레임워크입니다. 이 문서에서는 ThinkPHP v5.0.14을 기준으로 설명합니다. 프로젝트 구조 project 애플리케이션 배포 디렉토리 ├─application 애플리케이션 디렉토리 │ ├─common 공통 모듈 디렉토리 │ ├─index 모듈 디렉토리 │ │ ├─controller 컨 ...

7월 14일 19:45에 게시됨

작업 중일 때 유용하게 사용할 수 있는 PHP 함수들

PHP은 매우 풍부한 내장 함수를 제공하지만, 여전히 많은 함수들이 개발자들 사이에서 덜 알려져 있습니다. 이 기사에서는 작업 중일 때 특히 유용하게 사용할 수 있는 함수들을 소개합니다. 1. levenshtein() 두 문자열 간의 차이를 측정할 때 사용할 수 있는 함수입니다. 문자열의 산출물이 같을 때 유용하게 사용할 수 있습니다. $string1 = "example"; $string2 = ...

7월 13일 03:24에 게시됨

PHP 8 JIT 컴파일을 활용한 AI 추론 가속화

PHP의 새로운 가능성: JIT와 수치 연산의 만남 웹 개발의 대명사로 불리던 PHP가 이제는 AI 추론 영역에서도 주목받고 있습니다. PHP 8.0부터 도입된 JIT(Just-In-Time) 컴파일은 단순한 성능 개선을 넘어, 언어의 활용 범위를 크게 확장했습니다. 특히 행렬 연산이 빈번한 머신러닝 추론 과정에서 JIT가 가져오는 이점은 상당합니다. 기존 Zend 엔진의 해석 실행 방식은 ...

7월 12일 19:43에 게시됨

ThinkPHP에서의 데이터 조작: 삽입, 삭제, 수정, 조회

1. 데이터 객체 생성 폼을 통해 제출된 데이터를 기반으로 모델 객체를 생성할 수 있다. $userModel = M('User'); // User 모델 인스턴스화 $userModel->create(); // POST 데이터를 기반으로 자동으로 데이터 객체 생성 2. 데이터 삽입 새로운 레코드를 데이터베이스에 추가하려면 add() 메서드를 사용한다. 이 메서드는 삽입된 행의 기본 키 값을 반환한다. $userModel ...

7월 10일 05:42에 게시됨

LAMP 환경 설정 및 웹 애플리케이션 배포

LAMP 개요 LAMP는 동적 웹 사이트 또는 웹 애플리케이션을 구축하기 위한 오픈소스 소프트웨어 스택의 약자입니다. 다음은 주요 구성 요소입니다: Linux - 운영 체제로서, 보통 CentOS나 Ubuntu와 같은 리눅스 배포판을 사용합니다. Apache - HTTP 요청을 처리하고 응답하는 웹 서버 역할을 합니다. MySQL/MariaDB - 데이터를 저장하고 관리하는 릴레이션형 데이터베이스 ...

7월 9일 21:34에 게시됨

PHP 오픈소스 유지보수와 커뮤니티 구축: 고립에서 생태계로

1. 오픈소스 프로젝트 초기화: 기반 다지기 오픈소스는 단순히 코드를 공개하는 것이 아니라 지속 가능한 생태계를 구축하는 행위입니다. 초기 설정이 잘못되면 법적 위험이나 기술적 혼란을 초래할 수 있습니다. 잘못된 사례: 라이선스 없이 상용 SDK를 GitHub에 푸시한 개발자. // 사용자가 바로 복제하여 사용하다 법적 문제에 봉착 class PaymentGateway { priva ...

7월 8일 18:35에 게시됨

PHP Composer: 로컬에서 개발된 확장 패키지 통합

로컬 PHP 확장 패키지 개발 1. 확장 패키지 디렉토리 구조 생성 hoo-tool 디렉토리를 생성하고 그 안에 src 디렉토리를 만듭니다. hoo-tool 디렉토리에서 다음 명령어를 실행합니다: composer init 명령 실행 후 composer.json 파일의 내용은 다음과 같습니다: { "name": "hoo/tool", "description": "hoo Tool kit ...

7월 8일 16:41에 게시됨

파일 업로드 우회 기법

파일 업로드 시 보안 제한을 우회하는 다양한 방법들을 소개합니다. 여기서는 PHP 웹셸을 예시로 사용하겠습니다. 1. 프론트엔드 JS 파일 확장자 제한 웹 페이지에서 JavaScript를 통해 특정 확장자만 업로드할 수 있도록 제한하는 경우: JS 코드의 파일 확장자 검사를 비활성화합니다. 허용된 형식으로 파일을 업로드한 후, 패킷을 잡아 filename을 스크립트 형식으 ...

7월 4일 21:29에 게시됨

Hyperf HTTP 서버 부팅 과정 분석

Hyperf 프로젝트를 생성한 후 터미널에서 php bin/hyperf.php start 명령을 실행하면, 잠시 후 워커 프로세스가 시작되고 HTTP 서버가 9501 포트에서 대기 중이라는 로그가 출력된다. [INFO] Worker#3 started. [INFO] Worker#1 started. [INFO] Worker#2 started. [INFO] Worker#0 started. [INFO] HTTP Server listening at 0.0.0.0:9501 브라우저에서 http:// ...

7월 4일 20:06에 게시됨

PHP CAPTCHA 생성 클래스 구현

이미지 기반 CAPTCHA 생성 클래스를 구현하여 웹 폼 보안을 강화할 수 있습니다. GD 라이브러리를 활용한 PHP 구현 예시입니다. CAPTCHA 클래스 구조 <?php session_start(); class CaptchaGenerator { private $charSet = 'ABCDEFGHJKLMNPQRSTUVWXYZabcdefghjkmnpqrstuvwxyz23456789'; private $captchaText; private $textLength = 4; private $imgW ...

7월 3일 00:41에 게시됨