플러그인 설치를 위해 내 FTP 자격 증명을 요구하는 WordPress


118

로컬 시스템에 WordPress 블로그를 설치했습니다. 그러나 관리자에서 플러그인을 추가하려고 할 때 FTP 액세스를 요청합니다. WordPress가 FTP없이 업로드 할 수 있도록 구성하려면 무엇이 필요합니까?

답변:


302

wp-config.php에 코드를 추가해보십시오.

define('FS_METHOD', 'direct');

29
인터넷 검색을하는 동안이 답변에 계속 걸려 넘어 지므로 여기에 나와 다른 사람을 위해 메모를 게시합니다. 코드는 wp-admin / includes / file.php : get_filesystem_method에 있습니다. Wordpress는 'wp-content / temp-write-test-'. time () 파일을 만들려고합니다. 이것이 실패하면 FTP 만 사용할 수 있다고 가정합니다. 그러나 wp-content 자체가 쓰기 가능하지 않은 경우 이는 사실이 아닐 수 있지만 예를 들어 wp-content / plugins는 그렇습니다. 그런 다음 FS_METHOD 강제가 작동합니다.
— Sebastian Schmid

3
작동하지만 이제 문제는 패키지의 압축을 푼 후 "디렉터리를 만들 수 없습니다."라는 오류 메시지입니다.
— Andrew

3
이것은 나를 도왔지만 실패에 대한 더 많은 정보를 노출했기 때문입니다. 핵심 문제는 업데이트를 수행하는 사용자 계정에 대한 쓰기 권한이 있다는 것입니다. 시스템 유형마다 다를 수 있습니다. (아래의 일부 답변은 데몬, httpd 또는 아파치에 대한 쓰기 권한을 설정하라고 알려줍니다 ...) 아래 주석에서 PHP 스 니펫을 보는 데 도움이되었습니다 (<? php echo (exec ( "whoami")); ?>) 업데이트를 실행중인 사용자를 알 수 있습니다. 여기에서 제안한 변경 사항은 단순히 FTP 자격 증명 문제를 억제하는 것처럼 보였으므로 오류 메시지를 볼 수있었습니다.
— agentv

Apache가 아닌 nginx를 사용하고 있습니다. PHP-FPM 이 올바른 사용자 / 그룹 조합을 사용 한다는 것은 분명합니다 (@Aboozar Rajabi가 설명하는 트릭 사용). 그러나 어떤 이유로 WP 검사가 실패합니다 (로그에 오류 없음). 이 설정을 사용하면 4.7로 완벽하게 업그레이드 할 수있었습니다!
— Gwyneth Llewelyn

1
내 추측은, 워드 프레스하기 전에 다른 지역의 개발 운영을 해왔 것은 FS_METHOD약자입니다 FILESYSTEM_METHOD. directFTP를 사용하지 않고 파일을 수정하도록 정의 할 때 WordPress에서 사이트의 파일을 직접 수정하도록 강제하는 것입니다.
— Dylan Pierce

40

Ubuntu를 사용하는 경우.

sudo chown -R www-data:www-data PATH_TO_YOUR_WORDPRESS_FOLDER

7
-1 나쁜 생각, www-data여기에서 wp-content 만 소유해야합니다 : codex.wordpress.org/Hardening_WordPress 또는 여기 : stackoverflow.com/questions/18352682/…
— timhc22

이 대답은 "설치 실패 : WordPress 콘텐츠 디렉터리 (wp-content)를 찾을 수 없음"오류도 수정합니다. 대시 보드에서 플러그인을 설치하려고 할 때.
— WindChimes dec.

25

"WordPress 제어판을 사용하여 플러그인을 자동으로 설치, 업그레이드 또는 삭제할 때마다 WordPress는 파일 시스템의 파일을 변경해야합니다.

변경하기 전에 WordPress는 먼저 파일 시스템을 직접 조작 할 수있는 권한이 있는지 여부를 확인합니다.

WordPress에 파일 시스템을 직접 수정하는 데 필요한 권한이없는 경우 WordPress가 FTP를 통해 필요한 작업을 시도 할 수 있도록 FTP 자격 증명을 요청합니다. "

솔루션 : apache 인스턴스가 실행중인 사용자를 찾으려면 다음 내용으로 테스트 스크립트를 작성하십시오.

<?php echo(exec("whoami")); ?>

나에게는 www-data가 아닌 데몬이었습니다. 그런 다음 다음과 같이 권한을 수정합니다.

sudo chown -R daemon /path/to/your/local/www/folder

3
exec () 또는 이와 유사한 민감한 기능을 비활성화하는 것을 잊지 마십시오. 생산 중.
— Arda

2
더 나은 여전히 사용하는 <?php echo(exec("id")); ?>경우에도 사용자 ID를 넘어 당신에게 그룹 데이터를 제공합니다 :uid=5018(web27) gid=5012(client7) groups=5012(client7),5002(sshusers)
— 기네스 르 웰린은

sudo 및 chown을 할 수 있으면 입력 할 수 whoami있으므로 동일한 정보를 볼 수 있습니다 .sudo chown -R `whoami` /path/to/your/local/www/folder
— Benji

11

OSX에서 다음을 사용했으며 작동했습니다.

sudo chown -R _www:_www {path to wordpress folder}

_www는 Mac에서 PHP를 실행하는 사용자입니다.

(또한 일부 폴더를 chmod해야 할 수도 있습니다.이 작업을 먼저 수행했지만 수정하지 않았습니다. chown 명령을 수행 할 때까지는 작동하지 않았으므로 chown 명령인지 확실하지 않습니다. 단독으로 또는 chmod와 chown의 조합.)


9

워드 프레스 폴더의 소유권을 www-data로 재귀 적으로 변경하고 아파치를 다시 시작했습니다.

sudo chown -R www-data:www-data <folderpath>

그것은 매력처럼 작동했습니다!


이것은 아마도 대부분의 사람들에게 정답 일 것입니다. 폴더를 만들고 쪼개는 것을 잊은 것은 이번이 세 번째라고 생각합니다.
— MrMysterious2502

7

Google의 첫 번째 히트 곡에서 :

WordPress는 파일에 직접 액세스 할 수없는 경우 FTP 자격 증명을 요청합니다. 이는 일반적으로 WordPress 파일을 소유 한 사용자가 아닌 Apache 사용자 (mod_php 또는 CGI)로 실행되는 PHP로 인해 발생합니다.

이것은 대부분의 공유 호스팅 환경에서 다소 정상적입니다. 파일은 사용자로 저장되고 Apache는 사용자 apache또는 httpd. 이것은 실제로 좋은 보안 예방책이므로 익스플로잇과 해킹은 호스팅 된 파일을 수정할 수 없습니다. 모든 WP 파일을 777 보안으로 설정하여이를 피할 수 있지만 이는 보안이 없음 을 의미 하므로 이에 대해 적극 권장합니다. FTP를 사용하면 좋은 이유가있는 자동으로 권장되는 해결 방법입니다.


설명 해주셔서 감사합니다. 올바른 사용자로 PHP를 실행하거나 소유자 또는 다른 솔루션을 수정하도록 공유 서버를 구성하는 방법이 있습니까?
— Maxwell sc

4

먼저 설치 폴더로 이동하십시오 (예 :)

cd /Applications/XAMPP/xamppfiles/

이제 htdocs 디렉토리를 수정하겠습니다.

sudo chown -R daemon htdocs

메시지가 표시되면 루트 비밀번호를 입력 한 다음 chmod 호출로 완료합니다.

sudo chmod -R g+w htdocs

4

여기에 설명 된 단계에 따라 Ubuntu 14.04에 WordPress를 로컬로 설치 하고 간단히 실행했습니다.

sudo chown -R www-data:www-data {path_to_your_project_directory}

플러그인 다운로드 문제를 해결했습니다. 내가이 게시물을 여기에 남기는 유일한 이유는 내 문제를 검색했을 때 이것이 첫 번째 결과 중 하나 였고 내 문제에 대한 해결책으로 이끌었 기 때문입니다.

이것이 누구에게나 도움이되기를 바랍니다!


3

우리는 더 큰 문제의 일부와 같은 문제를 겪었습니다. 제안 된 솔루션

define('FS_METHOD', 'direct');

해당 창을 숨기지 만 테마 및 업그레이드 등을로드하는 데 여전히 문제가 있습니다. 권한과 관련이 있지만 우리의 경우에는 php OS 공급 업체 mod_php 에서보다 안전한 php OS 공급 업체 FastCGI 응용 프로그램 으로 이동하여 문제를 해결했습니다 .


3

플러그인을 설치하는 동안 Wordpress에서 호스트 이름 또는 FTP 세부 정보를 요청합니다. 그런 다음 다음 단계를 따르십시오.

서버에 로그인하고 / var / www / html / wordpress /로 이동 합니다. wp-config.php를 열고 define ( 'DB_COLLATE') 뒤에이 줄을 추가하세요.

define('FS_METHOD', 'direct');

"디렉터리를 만들 수 없습니다"오류가 발생하는 경우. 재귀 적으로 wordpress 디렉토리에 쓰기 권한을 부여하십시오.

chmod -R go+w wordpress

노트. 보안을 위해 플러그인을 다음과 같이 설치하면 이러한 권한을 취소하십시오.

chmod -R go-w wordpress

2

이 문제를 해결하는 가장 쉬운 방법은 다음 FTP 정보를 wp-config.php

define('FS_METHOD', 'direct');
define('FTP_BASE', '/usr/home/username/public_html/my-site.example.com/wordpress/');
define('FTP_CONTENT_DIR', '/usr/home/username/public_html/my-site.example.com/wordpress/wp-content/');
define('FTP_PLUGIN_DIR ', '/usr/home/username/public_html/my-site.example.com/wordpress/wp-content/plugins/');

FTP_BASE 는 WordPress 설치의 "base"(ABSPATH) 폴더에 대한 전체 경로입니다. FTP_CONTENT_DIR 은 WordPress 설치 의 wp-content 폴더에 대한 전체 경로입니다. FTP_PLUGIN_DIR 은 WordPress 설치 플러그인 폴더의 전체 경로입니다.


FTP는 안전하지 않으므로 비활성화하므로 해결책이 아닙니다. 대신 SFTP를 사용합니다.
— Laurence Cope

1

Niels가 언급했듯이 이것은 서버 프로세스 사용자가 Wordpress 폴더에 쓸 수 없기 때문에 발생합니다.

그러나 여기에 많은 기사가 설명하지 않는 것이 있습니다. nginx 프로세스가 아니라 PHP 프로세스의 소유자입니다. nginx 소유자를 변경하려고하면이 문제가 해결되지 않습니다.

이를 해결하려면 실행 ps aux하여 php-fpm 프로세스를 소유 한 사용자를 확인하십시오. 그런 다음 사용자가 wordpress 폴더의 소유자와 동일한 사용자인지 또는 최소한 쓰기가 가능한지 확인합니다. 사용자가 쓸 수없는 경우 폴더의 권한 및 / 또는 소유권을 변경해야합니다. 또는 두 사용자 (서버 소유자 및 wordpress 폴더 소유자)를 폴더에 쓸 수있는 공통 그룹에 넣습니다. 또는 php.ini "user"속성을 폴더에 쓸 수있는 사용자로 변경합니다.


1

이 질문에 대한 유사한 답변이 많이 있지만 근본 원인을 완전히 다루지는 않습니다. 원본 게시물에 대한 Sebastian Schmid의 의견은 그것에 대해 다룹니다. 다음은 2018-11-06 현재 내 의견입니다.

근본 원인

WordPress 관리자 인터페이스를 통해 플러그인을 업로드하려고하면 WordPress에서 "get_filesystem_method ()"라는 함수를 호출합니다 (참조 : /wp-admin/includes/file.php:1549 ). 이 루틴은 문제의 위치 (이 경우 플러그인 디렉토리)에 파일 쓰기를 시도합니다. 물론 파일 권한이 WordPress 사용자 (PHP를 실행하는 사용자 ID를 생각해보십시오)가 해당 위치에 파일을 쓸 수 있도록 설정되지 않은 경우 여기에서 즉시 실패 할 수 있습니다.

파일을 생성 할 수있는 경우이 함수는 함수의 현재 파일 (ref : /wp-admin/includes/file.php:1572 ) 의 파일 소유자와 함께 임시 파일의 파일 소유자를 감지 하고 둘을 비교합니다. 일치하는 경우 WordPress의 말에서 "WordPress는 WordPress 파일과 동일한 소유자로 파일을 생성합니다. 이는 PHP를 통해 새 파일을 수정 및 생성하는 것이 안전함을 의미합니다."그리고 FTP 자격 증명 프롬프트없이 성공적으로 업로드됩니다. 일치하지 않으면 FTP 자격 증명 프롬프트가 표시됩니다.

수정

  1. PHP 프로세스를 실행하는 ID로 플러그인 디렉토리를 쓸 수 있는지 확인하십시오.
  2. PHP 프로세스를 실행하는 ID가 다음 중 하나에 대한 파일 소유자인지 확인합니다.

    a) 모든 WordPress 애플리케이션 파일 또는 ...
    b) 최소한 /wp-admin/includes/file.php 파일

최종 의견

이 문제를 해결하기 위해 file.php에 파일 소유권을 구체적으로 적용하는 데 지나치게 관심이 없습니다. 이 시점에서 WordPress 코드베이스는 WordPress 응용 프로그램 파일의 파일 소유자와 동일한 사용자 주체로 PHP 프로세스를 실행하는쪽으로 기울고있는 것 같습니다. 이에 대한 커뮤니티의 의견을 환영합니다.


1

나는 같은 문제에 직면했다! 아래 코드를 wp-config.php 파일 (어느 줄 에나)에 추가했으며 현재 작동 중입니다!

define('FS_METHOD', 'direct');
당사 사이트를 사용함과 동시에 당사의 쿠키 정책과 개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.