wp-cli가 Success라는데 안 바뀌었을 때 확인할 세 가지

세 줄 요약

겪은 일: wp-cli가 Success를 찍었는데 값이 안 바뀌었거나, 오류가 났는데 글은 이미 만들어져 있습니다.

원인: 옵션 이름 오타는 오류 없이 무시되고, 글 저장 뒤에 도는 플러그인 훅에서 죽어도 오류만 보입니다.

이렇게 풀었다: 명령 뒤에는 꼭 값을 다시 읽고, 오류가 나면 재시도 전에 실제 상태부터 조회합니다.

wp-cli의 출력 문구는 결과를 그대로 말해 주지 않을 때가 있습니다. 성공이라는데 아무것도 안 바뀌었고, 실패라는데 이미 바뀌어 있었습니다. 실제로 겪은 세 가지를 차례로 적습니다.

증상: 출력과 실제 결과가 달랐던 세 경우

경우 화면에 나온 것 실제 결과
가. 표시 이름 변경 Success: Updated user 1. 다시 읽어 보니 반영 0
나. 페이지 생성 치명적 오류 페이지는 이미 만들어져 있었고, 재실행해 중복 생김
다. 미디어 가져오기 업로드 폴더로 이동 거부 글은 올라가고 이미지는 깨짐(7편 중 4편)

나의 경우 오류 문구는 ftp_nlist(): Argument #1 must be of type FTP\Connection 였습니다. 같은 패턴을 두 번 겪고도 세 번째 사이트에서 확인 없이 다시 돌려 중복 페이지 2개가 생겼고, 나중 것의 슬러그 끝에는 -2 가 붙었습니다.

원인: 각각 다른 이유

가. 옵션 이름은 밑줄

wp user update 에서 표시 이름 옵션은 --display_name 입니다. --display-name 처럼 하이픈으로 쓰면 오류 없이 무시되고, 그래도 Success 를 찍습니다.

나. 저장 뒤에 도는 훅

워드프레스는 글을 DB에 저장한 다음 플러그인과 테마의 훅을 실행합니다. 그 훅 안에서 죽으면 생성은 끝났는데 화면에는 오류만 남습니다. 오류를 "아무 일도 없었다"로 읽으면 다시 돌려 중복이 쌓입니다.

다. 파일 소유자와 실행 사용자가 다름

업로드 폴더와 웹 파일이 www-data 소유인데 다른 일반 사용자로 명령을 돌렸습니다. 글은 DB에 들어가지만 이미지 파일을 업로드 폴더로 옮기는 단계에서 권한이 거부됩니다.

글과 이미지를 올리는 스크립트는 평소에 root 의 예약 작업으로 돌아서 문제가 없었습니다. 정리 작업 중에 일반 사용자로 SSH 접속해 같은 스크립트를 손으로 돌리자 그때만 권한 오류가 났습니다. 같은 명령이라도 누가 실행하느냐에 따라 결과가 달라진 것입니다. 글을 옮겨 두는 폴더나 처리 기록 파일도 www-data 소유라 같은 이유로 이동과 기록이 실패했습니다.

세 경우의 공통점은 화면 문구를 결과로 믿었다는 것입니다. 성공 문구는 명령이 끝났다는 뜻이고, 오류 문구는 어딘가에서 멈췄다는 뜻일 뿐입니다. 무엇이 바뀌었는지는 직접 다시 읽어야 압니다.

해결: 명령마다 이렇게 바꿨습니다

가. 바꾼 뒤에는 반드시 값을 다시 읽습니다.

wp user update 1 --display_name="새 이름"
wp user get 1 --field=display_name

나. 오류가 나면 재시도하기 전에 실제로 무엇이 있는지 봅니다. 플러그인 훅이 원인이면 훅을 건너뛰고 만듭니다. 글 생성만 하는 작업에는 부작용이 없었습니다.

wp post list --post_type=page --post_status=any --fields=ID,post_name,post_status
wp post create --post_type=page --post_title="제목" --post_status=publish --skip-plugins --skip-themes

이미 중복이 생겼다면 나중 것을 지우고, -2 가 붙은 주소가 더는 열리지 않는지 확인합니다.

wp post delete <나중_ID> --force

다. 파일 소유자와 같은 사용자로 실행합니다. root 로 돌려야 하면 --allow-root 를 붙입니다.

cd /var/www/example.com
sudo -u www-data wp media import /path/to/image.jpg --post_id=<글_ID>

바뀌었는지 직접 확인하는 법

  • 값을 바꾸는 명령은 같은 값을 읽는 명령과 한 쌍으로 돌립니다. 출력 문구가 아니라 읽은 값으로 판정합니다.
  • 생성 명령은 목록 조회로 개수를 셉니다. 슬러그 끝에 -2 가 있으면 중복입니다.
  • 미디어는 글 화면을 열어 이미지가 실제로 뜨는지 보고, 업로드 폴더 소유자를 ls -l 로 확인합니다.

같은 명령을 여러 대상에 돌릴 때는 대상마다 읽은 값을 표로 모아 두면 하나만 빠진 곳이 바로 보입니다. 이번에도 다 바꿨다고 생각했는데, 되읽기 전까지는 하나도 안 바뀐 것을 몰랐습니다.

워드프레스의 사이트맵이 성공처럼 보이는데 비어 있던 경우는 Rank Math 사이트맵 404 해결에, 고쳤는데 화면에 안 바뀌는 경우는 캐시 확인법에 적었습니다.

확인한 환경

항목 내용
프로그램 워드프레스, wp-cli
확인한 날짜 2026년 8월 23일(가, 나), 2026년 6월 20일(다)

관련 글

이 글의 내용은 2026년 10월 5일에 마지막으로 확인했습니다. 틀린 곳을 발견하시면 연락처로 알려 주세요.