프로젝트를 올려 실행했을 때 자주 나오는 두 가지 — FTP/SFTP 연결이 안 될 때와 세션이 유지되지 않을 때만 정리한 내용이다. EC2·리눅스 기준으로 폴더 권한과 php.ini 한 곳만 맞추면 되는 경우가 많다.
1. FTP·SFTP 연결이 안 될 때
클라이언트에서 FTP/SFTP 접속이 거부되거나 타임아웃이 나면 폴더 권한부터 확인하는 것이 좋다. 홈 디렉터리와 그 아래 경로가 너무 제한되어 있으면 접근이 되지 않는다.
아래는 EC2 기준으로 자주 쓰는 권한이다. /home, /home/ec2-user는 실행(진입)만 허용하고, 프로젝트 폴더는 업로드·수정을 위해 777로 두는 방식이다. (보안이 중요하면 755·775 등으로 줄여서 사용한다)
# /home 진입 허용
sudo chmod 711 /home
# ec2-user 홈 진입 허용
sudo chmod 711 /home/ec2-user
# 프로젝트 폴더 — 업로드·편집 가능 (실서비스에선 755·775 등 검토)
sudo chmod 777 /home/ec2-user/프로젝트명
프로젝트명 자리에 실제 폴더 이름을 넣는다. 777은 누구나 쓰기 가능하므로, 내부망과 계정만 쓴다면 괜찮지만 외부에 노출되는 서버라면 755나 775로 제한하는 것이 좋다.
2. 세션이 유지 안 될 때
로그인했는데 페이지를 넘기면 로그아웃되거나 세션 값이 유지되지 않는 경우가 있다. PHP에서 세션을 자동으로 시작하게 설정해 두면 해결되는 경우가 많다.
php.ini에서 아래 항목을 1로 변경한다.
sudo vi /etc/php.ini
설정 항목 이름은 session.auto_start이다. 점(.)으로 구분된다. 0이면 비활성, 1이면 요청 시 자동으로 세션이 시작된다.
; 0 → 1 로 변경
session.auto_start = 1
수정 후 웹 서버(또는 php-fpm)를 재시작해야 적용된다.
sudo systemctl restart httpd
# 또는
sudo systemctl restart php-fpm
3. 자주 발생하는 문제와 대처
session_auto_start로 적어 둔 경우
session_auto_start=1처럼 적혀 있으면, 실제 php.ini 항목은 session.auto_start(중간에 점)이다. 언더스코어로 쓰면 인식되지 않으므로 점으로 맞춘다. session.auto_start = 1로 바꾼 뒤 웹 서버를 재시작하면 세션이 유지된다.
권한을 바꿨는데도 FTP 접속이 안 될 때
방화벽에서 21(FTP)·22(SFTP) 포트가 막혀 있거나, vsftpd·sshd 설정에서 해당 유저·경로가 제한되어 있을 수 있다. systemctl status vsftpd, ss -tlnp | grep 22로 서비스·포트를 확인하고, 방화벽은 firewall-cmd --list-all로 열린 포트를 확인한다.
한 줄 요약
FTP/SFTP 안 되면 /home·/home/ec2-user 711, 프로젝트 폴더 777(또는 755·775). 세션 유지 안 되면 php.ini에서 session.auto_start = 1 로 수정 후 웹 서버 재시작. 항목 이름은 session.auto_start (점 사용).
댓글 0