본문 바로가기

개발/PHP

(5)
502 Bad Gateway PHP-FPM 최적화 Nginx, MySQL, PHP0FPM, PHP 8 환경에서 child-process 가 부족하여 lock 발생 에러 확인될 경우 php-fpm conf 파일을 수정하여 최대 요청과 프로세스 수를 수정합니다. [21-Feb-2022 05:14:17] WARNING: [pool www] server reached pm.max_children setting (5), consider raising it php7.4-fpm 평균 프로세스 메모리 추적 ps --no-headers -o "rss,cmd" -C php7.4-fpm | awk '{ sum+=$1 } END { printf ("%d%s\n", sum/NR/1024,"Mb") }' 서버 메모리 확인 free -h pm.max_children 계산 서버 메..
Secure Coding - SQL Injection PHP SQL Injection 방지 방법에 대해 작성한다. OWASP 에서 1위로 선정된 위협으로 SQL Injection 이 있다. $sql="SELECT * FROM users WHERE userid='$userid' and password='$password'"; 위처럼 id와 암호를 받아서 로그인하는 부분에서 클라이언트가 $password input에 ' or '1' = '1 이라는 문자열을 넣으면 or 뒤의 조건문이 참이되어 관리자로 로그인이 가능하다. 해당 공격을 막기 위해서는 동적 쿼리가 아닌 Prepared Statement와 Bound Parameter 을 사용해야 한다. // PDO 사용 $stmt = $pdo->prepare('SELECT * FROM employees WHERE n..
PSR-0, PSR-1, PSR-2 (PHP Standards Recommendations) PSR(PHP Standards Recommendations)는 PHP의 표준 규약을 의미한다. PHP-FIG(PHP-FrameWork InteropGroup)에서 만든 표준 권고안이다. 1. PSR-0 Autoloading Standard 2014-10-21 기준으로 사용 중단, PSR-4 사용 권장. 오토로더 상호 운용성을 위해 반드시 준수해야하는 필수 요구사항에 대해 설명. 정규화된 네임스페이스 및 클래스는 다음과 같은 구조를 따라야 합니다. \\(\)* 각 네임스페이스의 최상위 네임스페이스에는 공급자(Vendor)의 이름을 사용해야 합니다. 각 네임스페이스는 원하는 만큼의 하위 네임스페이스를 가질 수 있습니다. 각 네임스페이스의 구분기호는 DIRECTORY_SEPARATOR로 변환됩니다. CLAS..
PHP 7 엄격한 타이핑 (strict mode) PHP 에서 "declare(strict_types = 1);" 지시문은 엄격한 타입 체크 모드를 활성화합니다. Strict 모드에서는 정확한 유형의 변수만 허용되며 정확하지 않은 유형일 경우 TypeError 가 발생합니다. 기본적으로 PHP는 약한 타입 체크 모드에서 작동하며 가능한 경우 다른 유형의 값을 예상되는 유형으로 캐스팅하여 처리합니다. 예를 들어 다음의 경우 정수를 문자열로 변환이 가능하여 문자열을 예상하는 함수는 정수 인수를 사용하여 호출할 수 있습니다.
PHP CI Chunk File Upload - Plupload 업무 중 IIS 웹 서버에 대량 파일 업로드를 개발하게 되어 과정을 기록한다. ​ 영상 업로드를 위해 10GB 이상의 파일을 웹 서버에 부하를 최소한으로 주며 업로드할 필요가 있었다. ​ 방법을 찾던 중 Chunk 방식의 분할 파일 업로드를 확인했다. ​ PHP지원 라이브러리 중 Plupload 가 괜찮아 보여서 사용하게 되었다. (처음에는 UI 보고 선택했다.) ​ [프론트] [Browse...] [Start Upload] [백엔드] } ​ function upload_video_process() { // Make sure file is not cached (as it happens for example on iOS devices) // HTTP Request Header 세팅 header("Expir..