Back-end 25

(php) Uncaught ErrorException: Return type of Illuminate\Support\Collection::offsetExists($key) 오류 해결 방법

Composer update시 PHP Fatal error: During inheritance of ArrayAccess: Uncaught ErrorException: Return type of Illuminate\Support\Collection::offsetExists($key) 다음과 같은 에러가 뜨는 경우가 있음. [원인] : PHP버전과 라라벨 버전이 맞지 않기 때문 [해결 방법] : php version을 7.4로 다운그레이드 해준다. (현재 PHP 사용 버전 8.1) * Mac 기준 php Downgrade 하는 방법 1. php 7.4 설치 (homebrew 패키지를 통해 터미널에서 다운로드 받아준다.) : $ brew install php@7.4 2. 현재 사용중인 php 버전 연결 중단..

Homestead 에서 php 8.x 버전 사용하기

homestead.yaml 파일에서 가상머신에서 사용할 php버전을 설정할 수 있다. * 그러나 homestead 13.2버전 부터 php 8.0 8.1버전을 지원함. 1. 홈스테드 버전 업그레이드를 위해 composer.json 파일에서 homestead 버전을 설정해준다. : 버전을 13.2로 변경해준 후 적용을 위해 컴포저를 업데이트 해준다. 명령어 => composer update 2. 홈스테드 설정파일에서 php 버전을 설정해준다. : homestead.yaml 파일의 sites 항목에서 php 버전을 설정 3. 적용을 위해 가상머신을 reload 해준다. 명령어 => vagrant reload --provision

BASH 취약점을 노린 SMTP 서버 공격 및 취약점 제거 방법

1. BASH 취약점 (Shell Shock) 이란? : 특정 BASH 버전에서 환경변수 함수 선언문 뒤에 임의의 명령어를 삽입하는 경우, 선언문 뒤의 명령어까지 실행되는 취약점이 있음. 2. BASH 취약점으로 생길수 있는 문제. : 공격자가 원하는 BASH명령어를 사용할 수 있으므로, 서버 내에 악성 프로그램 및 백도어등을 설치할 수 있음. (CGI의 User-Agent의 헤더 정보에 악성 명령어를 입력 후 전송 하는 등의 방법으로 공격) - 이를 통해 공격자는 SMTP서버를 해킹하고 공격한 서버를 통해 대량 피싱메일 발송등을 진행할 수도 있음. 3. BASH 취약점 확인 방법. : 환경변수를 선언하는 명령어 뒤에 임의의 명령어를 입력 해본다. $ env x='() { :;); echo test' b..

Back-end/Server 2022.08.09

(리눅스) mount 란 무엇인가? mount 옵션 정리

1. 마운트 (mount) 란? : 리눅스에서 여러가지 하드웨어 장치들을 사용하기 위해 리눅스라는 운영체제에 인식시켜야 하는데 이를 가능하게 해주는 작업. 2. mount 명령어 사용법 : mount [-fnrvw] [t 파일 시스템 종류] [-o 옵션] 디바이스명 디렉토리명 2-1. [ -fnrvw] 옵션 -f : 실제 시스템 호출은 하지 않고 마운트 할 수 있는지 점검 -n : /etc/mtab 파일에 쓰기 작업을 하지 않고 마운트 -r : read only -v : 자세한 정보 출력 -w : read, write 모두 가능 2-2. 파일 시스템 (마운트할 장치에 맞게 사용) -vfat : Window 95, 98, NT 파일 시스템 -ext2 : 리눅스에서 사용되는 파일 시스템 -ext3 : ext..

Back-end/Server 2021.11.13

제로다운타임 이란?

1. 제로다운타임 이란 ? : 프로젝트를 배포하는 과정 중 다운타임(시스템을 이용할 수 없는 시간)이 존재할 수 있다. 또한 다운타임이 존재한다면, 서비스 장애와 배포의 부담이 올 수 있다. 이러한 부담을 최소화 하기 위해 중단없이 영중인 서비스를 배포할 수 있는 기술이 제로다운타임 기술 * 요즘은 배포 시스템이 잘 갖추어 져 다운타임이 그렇게 길게 존재하지는 않는다. 하지만 찰나의 다운타임 순간이 존재하고, 그 과정 중 오류가 발생할 수 있는 여지는 존재한다. 현재 ploi에서 배포하는 과정 중 composer update를 하는 과정과 데이터베이스 migrate하는 과정이 포함되어 있음. composer update를 하는 과정 중에서는, 네트워크의 송 수신이 잠시 차단될 수 있으며 데이터베이스 mi..

Back-end/Server 2021.11.13

(리눅스) log 파일 크기 조절하기 (원하는 크기로 잘라내기)

1. 로그 파일 초기화 시키기(파일은 그대로 존재) * 로그가 용량을 너무 많이 잡아먹고 있을 때 사용하면 좋음 # truncate -s 0 /home/ploi/abcd.test/storage/log/laravel.log ; 해당 경로의 파일의 크기를 0으로 만든다. (해당 파일은 그대로 존재) * 사용법) truncate -s [변경할 사이즈] [해당 파일의 경로] ; 만약 변경할 사이즈가 0이 아니면, 뒤에서부터 줄어든다 (늘리는 것도 가능 - 마찬가지로 뒤에서부터 늘어남) * 참고) 만약 해당 경로에 파일이 존재하지 않으면, 해당 크기로 새로운 파일을 만든다. 2. -s 옵션 사용 방법 ; truncate 명령어에 -s 옵션 후 "K, M, G, T" 혹은 "KB, MB, GB, TB"를 통해서 원..

Back-end/Server 2021.11.02

(PHP) 정규식 정리

* 정규식을 사용하면 단순 패턴을 캐치 해, 해당 패턴을 만족하는 식에 대해 원하는 조건을 줄 수 있다. ex) 마스킹 처리, 휴대폰 번호 형식 통일, (전화번호, 이메일)유효성 검사 등등.. . 임의의 한 문자 (줄 바꿈 제외 \n) ? 해당 문자 패턴이 0번 또는 1번 반복 * 해당 문자 패턴이 0번 이상 반복 + 해당 문자 패턴이 1번 이상 반복 {...} 반복되는 횟수를 지정 ^ 문자열의 처음을 의미 $ 문자열의 끝을 의미 \ 특수문자를 무시 | 선택을 의미 (or) (...) 그룹화의 시작과 끝을 의미 이러한 정규식을 통해 해당 패턴을 만족하는 값들을 검색 ; preg_match_all('', '', '') 대체 ; preg_replace('', '', '') $example = 'example..

(nginx) 가상호스트 연결 방법

nginx 가상호스트 연결 방법 설명) /etc/nginx/nginx.conf nginx 설치 시 다음 경로에 설정 파일이 존재한다. 구조) http { ... ... server { listen 80 ... listen [::]80 ... server_name ..... root ..... } } ; http 블록 아래 다수의 server 블록이 존재한다. server 블록이 가상 호스트의 개념이다. server 블록에서 해당 서버에 어떤 호스트 네임과 포트 번호로 들어왔는 지에 따라, 내가 원하는 디렉토리로 연결시켜 줄 수 있다. 이를 활용하면, 한 서버에서 여러 사이트를 운영할 수 도 있고, 다른 도메인으로 접속을 해도 한 사이트를 보여줄 수도 있다. * 다수의 server 블록 중 순서대로 위에서..

Back-end/Server 2021.08.01