답변:
wp-config.php에 코드를 추가해보십시오.
define('FS_METHOD', 'direct');
FS_METHOD
약자입니다 FILESYSTEM_METHOD
. direct
FTP를 사용하지 않고 파일을 수정하도록 정의 할 때 WordPress에서 사이트의 파일을 직접 수정하도록 강제하는 것입니다.
Ubuntu를 사용하는 경우.
sudo chown -R www-data:www-data PATH_TO_YOUR_WORDPRESS_FOLDER
www-data
여기에서 wp-content 만 소유해야합니다 : codex.wordpress.org/Hardening_WordPress 또는 여기 : stackoverflow.com/questions/18352682/…
"WordPress 제어판을 사용하여 플러그인을 자동으로 설치, 업그레이드 또는 삭제할 때마다 WordPress는 파일 시스템의 파일을 변경해야합니다.
변경하기 전에 WordPress는 먼저 파일 시스템을 직접 조작 할 수있는 권한이 있는지 여부를 확인합니다.
WordPress에 파일 시스템을 직접 수정하는 데 필요한 권한이없는 경우 WordPress가 FTP를 통해 필요한 작업을 시도 할 수 있도록 FTP 자격 증명을 요청합니다. "
솔루션 : apache 인스턴스가 실행중인 사용자를 찾으려면 다음 내용으로 테스트 스크립트를 작성하십시오.
<?php echo(exec("whoami")); ?>
나에게는 www-data가 아닌 데몬이었습니다. 그런 다음 다음과 같이 권한을 수정합니다.
sudo chown -R daemon /path/to/your/local/www/folder
<?php echo(exec("id")); ?>
경우에도 사용자 ID를 넘어 당신에게 그룹 데이터를 제공합니다 :uid=5018(web27) gid=5012(client7) groups=5012(client7),5002(sshusers)
whoami
있으므로 동일한 정보를 볼 수 있습니다 .sudo chown -R `whoami` /path/to/your/local/www/folder
워드 프레스 폴더의 소유권을 www-data로 재귀 적으로 변경하고 아파치를 다시 시작했습니다.
sudo chown -R www-data:www-data <folderpath>
그것은 매력처럼 작동했습니다!
WordPress는 파일에 직접 액세스 할 수없는 경우 FTP 자격 증명을 요청합니다. 이는 일반적으로 WordPress 파일을 소유 한 사용자가 아닌 Apache 사용자 (mod_php 또는 CGI)로 실행되는 PHP로 인해 발생합니다.
이것은 대부분의 공유 호스팅 환경에서 다소 정상적입니다. 파일은 사용자로 저장되고 Apache는 사용자 apache
또는 httpd
. 이것은 실제로 좋은 보안 예방책이므로 익스플로잇과 해킹은 호스팅 된 파일을 수정할 수 없습니다. 모든 WP 파일을 777 보안으로 설정하여이를 피할 수 있지만 이는 보안이 없음 을 의미 하므로 이에 대해 적극 권장합니다. FTP를 사용하면 좋은 이유가있는 자동으로 권장되는 해결 방법입니다.
플러그인을 설치하는 동안 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
이 문제를 해결하는 가장 쉬운 방법은 다음 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 설치 플러그인 폴더의 전체 경로입니다.
Niels가 언급했듯이 이것은 서버 프로세스 사용자가 Wordpress 폴더에 쓸 수 없기 때문에 발생합니다.
그러나 여기에 많은 기사가 설명하지 않는 것이 있습니다. nginx 프로세스가 아니라 PHP 프로세스의 소유자입니다. nginx 소유자를 변경하려고하면이 문제가 해결되지 않습니다.
이를 해결하려면 실행 ps aux
하여 php-fpm 프로세스를 소유 한 사용자를 확인하십시오. 그런 다음 사용자가 wordpress 폴더의 소유자와 동일한 사용자인지 또는 최소한 쓰기가 가능한지 확인합니다. 사용자가 쓸 수없는 경우 폴더의 권한 및 / 또는 소유권을 변경해야합니다. 또는 두 사용자 (서버 소유자 및 wordpress 폴더 소유자)를 폴더에 쓸 수있는 공통 그룹에 넣습니다. 또는 php.ini "user"속성을 폴더에 쓸 수있는 사용자로 변경합니다.
이 질문에 대한 유사한 답변이 많이 있지만 근본 원인을 완전히 다루지는 않습니다. 원본 게시물에 대한 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 자격 증명 프롬프트가 표시됩니다.
수정
PHP 프로세스를 실행하는 ID가 다음 중 하나에 대한 파일 소유자인지 확인합니다.
a) 모든 WordPress 애플리케이션 파일 또는 ...
b) 최소한 /wp-admin/includes/file.php 파일
최종 의견
이 문제를 해결하기 위해 file.php에 파일 소유권을 구체적으로 적용하는 데 지나치게 관심이 없습니다. 이 시점에서 WordPress 코드베이스는 WordPress 응용 프로그램 파일의 파일 소유자와 동일한 사용자 주체로 PHP 프로세스를 실행하는쪽으로 기울고있는 것 같습니다. 이에 대한 커뮤니티의 의견을 환영합니다.