본문 바로가기
Linux/for Hosting

[wordpress] Unable to write to wp-config.php file.

by aegypius 2020. 7. 19.
728x90
반응형

워드프레스 디렉토리(폴더)와 파일의 권한설정(퍼미션), 소유자에 대한 정리(1)


  워드프레스를 설치하는 과정이나  설치 후 웹사이트를 제작하는 과정에서 발생할 수 있는 몇가지 문제가 있다. 제목과 같은 오류메시지 (한글버전인 경우에는 "죄송합니다. wp-config.php 파일을 만들 수 없습니다.")외에도 "The uploaded file could not be moved to wp-content/uploads/..." 혹은 "Publishing failed. The response is not a valid JSON response." 등과 같은 오류 메시지를 볼 수 있다.

wp-config.php를 만들 수 없습니다. (한글버전)
wp-config.php를 만들 수 없습니다. (영문버전)
Publishing failed. The response is not a valid JSON response.
파일 업로드 오류

  이 메시지들은 워드프레스를 서버에 설치하는 과정이나 설치 후 웹사이트를 제작하는 과정에서 디렉토리나 파일을 생성할 수 없을 때 발생한다. 디렉토리에 파일을 생성할 권한이 없기 때문이다. 대부분의 웹호스팅 업체들은 워드프레스의  자동설치를 지원하고 있기 때문에 이러한 메시지를 구경(?)하기는 힘들겠지만, 자체 서버를 운영하고 있다면 해결 방법을 고민해 봐야 할 것이다. 특히 혼자 쓰는 서버인지...누군가와 함께 사용하는 서버인지에 따라서도....


  이를 해결할 수 있는 가장 간단한 방법으로는 워드프레스가 제안한 방법으로 wp-config.php를 수동으로 만들고 위에서 출력된 메시지(php코드)를 그대로 복사해서 붙여넣는 것이다. 또는 기존에 만들어져 있는 샘플 파일인 wp-config-sample.php의 이름을 wp-config.php로 바꾼 후에 출력된 메시지를 붙여넣어도 된다.  파일의 업로드 오류는 워드프레스가 필요로하는 디렉토리(wp-content/uploads 등)를 수동으로 만들어주면 된다. 워드프레스의 메인 디렉토리(wp-config.php가 위치한 디렉토리).htaccess 파일을 생성할 수 없을 때 발생하는 "Publishing failed. The response is not a valid JSON response." 또한 해당 파일을 수동으로 만들면 해결된다. (.htaccess가 없다면 워드프레스의 대시보드에서 레스트 API가 예상치 못한 오류를 발견했습니다. 혹은 The Rest API encountered an unexpected error 가 발생할 수 있다.) 이 파일(.htaccess)이 없다면 새로운 페이지나 글을 작성할 때에 내용이 없는 빈 문서로 저장이 될 것이다.(Auto Draft). 워드프레스 관리자메뉴 Settings - Permalinks의 하단에 .htaccess 파일의 텍스트를 제공하고 있다. 이 텍스트를 .htaccess 라는 이름으로 저장하여 워드프레스의 메인 디렉토리에 올려놓으면 된다. 그 내용은 아래와 같다.

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>

  가장 깔끔한 방법이며 워드프레스 사용자가 서버관리자의 권한이 없더라도 수행할 수 있는 작업이다.


  두 번째 방법은 디렉토리의 퍼미션(permission)을 조정하는 것이다. 워드프레스가 설치된 메인 디렉토리의 퍼미션을  757이나 707로 변경한다. FTP로 접속해서 해당 디렉토리의 퍼미션을 변경할 수 있을 것이며, 시스템에서는 chmod를 이용해서 변경할 수 있다. 여기서 주의할 점은 디렉토리에 있는 파일이나 그 하위의 디렉토리까지 변경할 필요는 없다(아니 변경 해서는 안된다)는 것이다. 물론 메인 디렉토리의 퍼미션을 모든 사용자(other) 에게 7(wrx)로 설정하면 보안이 취약해지기 때문에 설치 후(작업이 끝난 후)에 원래대로 되돌려 놓아야 할 것이다. 예를 들어서 워드프레스가 설치된 메인디렉토리가 wpmain이라면 아래와 같이 퍼미션을 설정할 수 있다. 이 방법도 서버관리자가 아니더라도 가능한 작업이다.

# chmod 757 /home/pius/www/wpmain

  세 번째 방법은 디렉토리의 소유자(owner)를 웹서버의 데몬으로 변경하는 것이다. 운영중인 리눅스 시스템과(centos, ubuntu 등) 웹서버 소프트웨어(apache, nginx), 그리고 설치 옵션에 따라서 그 이름은 다를 수 있다. 만약 웹서버 데몬의 소유자가 apache라면 apache에게 소유권을 부여함으로써 이 문제를 해결하는 것이다. 또한 wp-content 디렉토리의 하위에 위치하고 있는 디렉토리(plugins, themes, upgrade, uploads)에도 동일한 소유권을 부여하게 되면 워드프레스의 상위버전으로의 업그레이드나, 테마의 다운로드, 변경, 플러그인의 추가설치 등을 할 때에도 모두 오류없이 사용이 가능하다. 디렉토리의 소유권을 변경하는 방식은 서버관리자가 아니라면 수행 할 수 없다.


하지만...

"The uploaded file could not be moved to wp-content/uploads/..."


위와 같은 오류메시지를 피하기 위해서 (
워드프레스의 원활한 운영(!?)을 위해서??) 파일(디렉토리)의 소유권(ownership)을 변경하는 것은 자칫 심각한 결과를 초래할 수 있다. 특정 디렉토리(위에서 예로 들었던 wp-content의 uploads)의 퍼미션을 777로 설정하는 것과 소유권을 웹서버의 데몬에게 주는 것 중에서 어떤 것을 택하겠는가? wp-content 디렉토리의 퍼미션을 777로 설정하는 것은 나도 동의하지는 못하지만 그 하위의 uploads 디렉토리라면 고민을 해 볼 것도 같다. (내 결론은 둘다 아니다 -_-;) 어차피 wp-content의 하위에 존재해야 하는 theme, plugins, upgrade, uploads 등의 디렉토리는 미리 만들어놓으면 된다. 아니...디렉토리를 생성할 수 없다는 오류메시지가 나타날 때에 만들면 된다. 이는 서버관리자가 해야 할 일이 아니라 해당 계정이 ftp를 통해서 수행해야 하는 작업일 뿐이다.

  uploads 디렉토리를 생성한 후에 워드프레스를 통해서 파일을 업로드 할 때에만 잠시 777(757)로 퍼미션을 수정하는 것이 가장 안전한 방법이라고 생각한다. 귀찮다고 느껴질 수 있겠지만....

  결론은.....(워드프레스를 설치하는)사용자가 설치 도중이나 설치 후에 테마나 플러그인의 추가, 미디어 라이브러리의 파일 업로드 등에서 디렉토리를 생성할 수 없다는 오류와 마주친다면 ftp를 통해서 만들어주면 그만이다. 사용자의 편의를 위해서 파일(디렉토리)의 소유권을 웹서버 데몬에게 넘긴다면 이러한 오류메시지 없이 작업은 진행 되겠지만 ftp로 접속했을 때에 정작 파일이나 디렉토리를 수정/삭제할 수 있는 권한이 없음을 알게 될 것이다. 물론 디렉토리와 파일의 퍼미션을 755, 644가 아닌 775, 664로 설정하고 소유권은 해당 계정에게, 그룹은 웹서버 데몬에게 넘겨주면 조금 그럴듯해 보인다. 하지만 그다지 추천하고 싶지는 않은 방법이다.


Wordpress 5.7 이후부터는 많이 달라진 듯 하다..... 아직 완벽하게(?) 테스트 한 것은 아니지만 permission, ownership 문제는 워드프레스 5.7 이상 버전을 설치하면 모두 해결된다. 아래의 글에서 대충 정리해봤다.

2021.05.17 - [Wordpress/etc] - 워드프레스 디렉토리(폴더)와 파일의 권한설정(퍼미션), 소유자에 대한 정리(2)

 

워드프레스 디렉토리(폴더)와 파일의 권한설정(퍼미션), 소유자에 대한 정리(2)

워드프레스 버전 5.7 미만의 버전을 설치하여 테스트 해보면 모든 것(?)이 명확해 질 것이다..... 큰 의미가 없다고 생각되지만......한가할 때....테스트는 해 볼 생각이다.....-_-; 무엇을 테스트 하

aegypius.tistory.com

p.s 2024년도 1월 막바지에 포스팅 한 아래의 글이 소유권과 허가권에 대한 최종 해결책이 된 것 같다...

2024.01.27 - [Wordpress] - 워드프레스 디렉토리와 파일의 permission, ownership에 대한 정리(4)

 

워드프레스 디렉토리와 파일의 permission, ownership에 대한 정리(4)

결국 이 타이틀로 네 번째 메모를 남긴다. 지난번 글( 2024.01.20 - [Wordpress] - [wordpress] 파일 및 디렉토리의 권한, 자격증명 오류 )은 제목이 다르지만 내용이 일부 겹치는 부분이 있어서... 이 타이틀

aegypius.tistory.com

 

728x90
반응형

댓글