워드프레스 관리자에서 테마나 플러그인을 설치하려고 하면 “FTP 접속 정보를 입력하세요”라는 창이 뜨는 경우가 있습니다. 매번 호스트·사용자명·비밀번호를 입력하자니 번거롭고, FTP 서버가 없으면 아예 설치 자체가 안 되죠. 이 글에서는 FTP 없이도 바로 설치되도록 설정하는 방법을 원인·해결책·부작용까지 정리합니다.
환경: Ubuntu 24.04 LTS + Nginx + PHP-FPM (이 사이트와 동일). Apache·LiteSpeed·다른 OS에서도 원리는 같습니다.
왜 FTP 입력창이 뜨는가?
워드프레스는 파일을 설치하기 전에 “내가(PHP 프로세스가) wp-content/plugins 폴더에 쓸 수 있나?”를 확인합니다. 쓸 수 없다고 판단하면 대체 방법으로 FTP를 제안하죠. 그래서 근본 원인은 파일 권한 불일치입니다.
두 가지 시나리오 중 하나입니다.
- 소유권 불일치 — 파일 소유자는
wpadmin인데 PHP-FPM은www-data로 실행되어 쓰기 권한이 없는 경우 - FS_METHOD 미지정 — 워드프레스가 “직접 쓰기” 방식을 자동 감지하지 못해 FTP로 폴백
해결 방법 1 — wp-config.php에 FS_METHOD 추가
가장 간단한 방법. wp-config.php의 /* That's all, stop editing! */ 주석 위에 한 줄 추가합니다.
define( 'FS_METHOD', 'direct' );
이는 “FTP 건너뛰고 파일 시스템에 직접 써라”는 명령입니다. 저장 후 관리자 → 플러그인 → 새로 추가 → 설치를 시도하면 FTP 창이 사라져 있습니다.
⚠️ 이 설정만으로 충분하지 않을 수 있습니다. 파일 권한 자체가 안 맞으면 여전히 실패합니다. 그럴 땐 해결 방법 2로 이어집니다.
해결 방법 2 — 파일 소유권·권한 정리
① PHP-FPM이 어떤 사용자로 도는지 확인
ps aux | grep php-fpm | grep -v grep
# www-data 1234 ... php-fpm: pool www
# www-data 1235 ... php-fpm: pool www
# 또는 설정 파일에서 확인
grep -E "^(user|group)" /etc/php/8.4/fpm/pool.d/www.conf
# user = www-data
# group = www-data
② 소유권을 PHP 사용자와 같게 맞추기
# 소유자:그룹 일괄 변경 (워드프레스 루트 기준)
sudo chown -R www-data:www-data /home/wpadmin/public_html
# 또는, 관리자 계정을 www-data 그룹에 넣어 공동 쓰기
sudo usermod -aG www-data wpadmin
sudo chown -R wpadmin:www-data /home/wpadmin/public_html
sudo chmod -R g+w /home/wpadmin/public_html
③ 권한 체계 표준화
# 디렉토리는 755, 파일은 644
sudo find /home/wpadmin/public_html -type d -exec chmod 755 {} \;
sudo find /home/wpadmin/public_html -type f -exec chmod 644 {} \;
# wp-config.php는 더 엄격하게
sudo chmod 640 /home/wpadmin/public_html/wp-config.php
이 세 단계를 거치면 FTP 창이 완전히 사라지고 테마·플러그인 설치가 즉시 됩니다. 자동 업데이트도 정상 작동합니다.
해결 방법 3 — WP-CLI로 우회 설치
서버에 SSH 접속 권한이 있다면 WP-CLI가 가장 빠릅니다. FTP·웹 UI 둘 다 필요 없습니다.
# WP-CLI 설치 (한 번만)
curl -O https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar
sudo mv wp-cli.phar /usr/local/bin/wp
sudo chmod +x /usr/local/bin/wp
# 플러그인 설치·활성화
cd /home/wpadmin/public_html
wp plugin install yoast-seo --activate
wp plugin install wp-super-cache --activate
# 테마 설치
wp theme install generatepress --activate
# 전체 업데이트
wp core update
wp plugin update --all
wp theme update --all
CLI는 수백 개의 사이트를 스크립트로 일괄 관리할 수 있어, 대행사·자동화 환경에서는 사실상 표준 도구입니다.
⚠️ 보안 주의사항 — “777이면 다 풀린다”는 함정
구글에 “워드프레스 FTP” 치면 “파일 권한을 chmod 777로 주면 해결”이라는 글이 많습니다. 절대 따라하지 마세요. 777은 “아무나 읽고 쓰고 실행”을 뜻합니다. 웹셸·악성 스크립트가 업로드되는 즉시 실행되어 사이트가 탈취됩니다.
- ✅ 디렉토리 755, 파일 644가 표준
- ✅
wp-config.php는 640 또는 600 - ✅ 업로드 폴더에서 PHP 실행 차단(Nginx에서 location 제한)
- ❌
chmod 777은 어떤 경우에도 사용 금지
업로드 폴더 PHP 실행 차단 예시 (Nginx):
location ~* /wp-content/uploads/.*\.php$ {
deny all;
}
그래도 해결이 안 된다면 — 체크리스트
- ☐
FS_METHOD추가 후 브라우저 캐시 강제 새로고침 (Ctrl+F5) - ☐ PHP 사용자 확인 → 워드프레스 파일 소유자와 일치시키기
- ☐
wp-content·wp-content/plugins·wp-content/themes·wp-content/uploads쓰기 가능 여부 - ☐ SELinux / AppArmor가 경로 차단 중인지 (Ubuntu 기본 AppArmor 활성)
- ☐ 호스팅 방화벽·보안 정책으로
www-data가 특정 경로를 못 쓰게 막았는지 - ☐ 테마·플러그인 zip 파일이 서버 메모리 한도보다 큰지 (
upload_max_filesize,post_max_size)
php 설정 조정은 /etc/php/8.4/fpm/php.ini에서:
upload_max_filesize = 64M
post_max_size = 64M
memory_limit = 256M
max_execution_time = 300
# 수정 후 재시작
sudo systemctl restart php8.4-fpm
FAQ
Q. 공유 호스팅에서도 이 방법이 통하나요?
호스팅사마다 권한 정책이 달라 FS_METHOD direct만으로 해결 안 될 수 있습니다. cPanel/DirectAdmin 같은 관리 패널을 쓰면 보통 suPHP / suExec로 파일 소유자 = 웹서버 실행자가 자동 정렬되어 추가 설정 없이 됩니다. 그래도 안 되면 호스팅 지원센터에 “FTP 없이 플러그인 설치되게 해 주세요”라고 요청하세요.
Q. AWS EC2 / Lightsail에서도 같은 방법인가요?
Amazon Linux·Ubuntu·Bitnami 모두 원리는 동일합니다. Bitnami 이미지는 기본 사용자가 bitnami이고 PHP는 daemon으로 도는 등 특수 설정이 있으니 공식 문서를 참고하세요.
Q. FTP 창에 그냥 정보 입력하면 안 되나요?
동작은 하지만 매 설치마다 입력해야 하고, FTP는 평문 전송이라 보안상 권장되지 않습니다. 굳이 써야 한다면 반드시 SFTP(SSH 기반)를 선택하세요. 장기적으로는 이 글의 방법 1·2로 전환하는 것이 안전·편리합니다.
Q. Docker로 워드프레스 돌리는데도 같은 문제가 있나요?
네. Docker의 공식 WordPress 이미지는 내부에서 www-data 사용자로 도는데, 호스트 볼륨을 마운트하면 UID 불일치로 권한 문제가 납니다. --user 옵션 또는 docker-compose.yml의 user: 지시어로 UID를 맞추세요. Docker Compose 설정은 Docker Compose 실전 가이드 참고.
마무리
정리하면: (1) FS_METHOD direct 추가 → (2) 파일 소유권 www-data로 정렬 → (3) 755/644 권한 표준화. 이 세 가지면 99%의 FTP 창 문제가 해결됩니다. 777로 모두 여는 손쉬운 해결은 보안 사고로 이어지니 반드시 권한 체계를 지키세요. 매번 FTP 정보를 치던 불편이 사라지면 플러그인 설치·업데이트 스트레스가 확연히 줄어듭니다.