요청 된 작업을 수행하려면 wordpress가 웹 서버에 액세스해야합니다. ftp를 입력하십시오


28

나는 다음과 같은거야 파일 권한«워드 프레스 코덱스 변경 , 아직 난 때 업데이트하려고 및 / 또는 설치 plugin및 / 또는 theme통해 wp-admin, 나는 다음 받고 있어요 :

요청 된 작업을 수행하려면 WordPress에서 웹 서버에 액세스해야합니다. 계속하려면 FTP 자격 증명을 입력하십시오. 자격 증명이 기억 나지 않으면 웹 호스트에 문의하십시오.

파일 시스템 레벨에서 :

# ls -ld wp-content/ wp-content/plugins/ wp-content/themes/
drwxrwxr-x.  6 root apache 4096 Jun  2 12:01 wp-content/
drwxrwxr-x. 28 root apache 4096 Jun  2 00:00 wp-content/plugins/
drwxrwxr-x. 11 root apache 4096 May 11 16:34 wp-content/themes/
# 

httpd다음과 같이 실행됩니다 apache.

$ ps auxw | grep httpd
root     20158  0.0  0.1 533080 26192 ?        Ss   15:03   0:00 /usr/sbin/httpd -DFOREGROUND
apache   20233  0.0  0.2 612608 34908 ?        S    15:03   0:00 /usr/sbin/httpd -DFOREGROUND
apache   20234  0.0  0.2 538772 46904 ?        S    15:03   0:00 /usr/sbin/httpd -DFOREGROUND
apache   20235  0.0  0.1 536832 24268 ?        S    15:03   0:00 /usr/sbin/httpd -DFOREGROUND
apache   20236  0.0  0.2 626272 35640 ?        S    15:03   0:00 /usr/sbin/httpd -DFOREGROUND
apache   20237  0.0  0.0 535296  9592 ?        S    15:03   0:00 /usr/sbin/httpd -DFOREGROUND
apache   20322  0.0  0.1 537088 26620 ?        S    15:03   0:00 /usr/sbin/httpd -DFOREGROUND
apache   20380  0.0  0.2 626060 33816 ?        S    15:04   0:00 /usr/sbin/httpd -DFOREGROUND
apache   20429  0.0  0.1 538216 29184 ?        S    15:04   0:00 /usr/sbin/httpd -DFOREGROUND
apache   20447  0.0  0.2 629380 43180 ?        S    15:04   0:00 /usr/sbin/httpd -DFOREGROUND
apache   20448  0.0  0.2 626172 35224 ?        S    15:04   0:00 /usr/sbin/httpd -DFOREGROUND
alexus   24073  0.0  0.0 112652   972 pts/9    R+   15:13   0:00 grep --color=auto httpd
$ 

FTP 자격 증명 없이 요청 된 작업 ( install및 / 또는 update) 을 수행하고 싶습니다 ./wp-admin

어떻게해야합니까?


1
이것이 로컬 호스트 설치입니까? 그렇다면 다음을 참조하십시오 : wordpress.stackexchange.com/questions/19649/…
Greg McMullen

1
@GregMcMullen 아니오, 이것은 로컬 호스트 설치 가 아니며 링크에서 "허용"된 답변은 wordpress 디렉토리의 소유권을 재귀 적으로 변경하는 nobody것입니다-이것은 다음 httpd과 같이 실행되기 때문에 작동하지 않습니다 apache.
alexus 2016 년

@alexus 현재 root.apache가 파일을 소유하고있는 것 같습니다. 아무도 대신 apache.apache를 사용해 보셨습니까?
Tim Malone 2016 년

로 @TimMalone 설정 파일 / 디렉토리 apache.apache또는 root.apache어떤 차이만큼하지 것 httpd같은 실행을 apache, 그리고 apache의는 uid의 일부입니다 apache gid내 권한 설정 때문에 S 그룹 '은 모두 동일합니다 g+w.
alexus 2016 년

@alexus Ok, 다른 시도-wp-config.php에서 FS_METHOD를 'direct'로 설정 ( codex.wordpress.org/… )
Tim Malone

답변:


52

wp-config.php에 다음을 추가하십시오 :

define( 'FS_METHOD', 'direct' );

그것이 당신을 위해 어떻게 작동하는지 알려주세요.



파일 시스템에 대한 권한이 없으면 나를 위해 일했습니다. Btw wp-config.php 맨 위에 추가했습니다
Toskan

이 방법을 사용하기 전에 Alexus가 링크 된 게시물을 읽으십시오. 이 방법은 확실히 작동하지만 (문제를 해결했습니다) 공유 호스팅 환경이나이를 수행하여 보안을 손상시킬 수있는 위험 환경 에서이 방법을 사용해서는 안됩니다.
JamesHoux

16

이는 WordPress에 설치된 폴더를 변경할 수있는 권한이 제한되어 있음을 의미합니다.

이 문제를 해결하기 위해서는 필요한 권한을 제공하기 만하면됩니다.

SSH를 통해 서버에 연결 한 후 터미널 / 퍼티 / 명령 줄 프롬프트에서 다음 명령을 실행하십시오.

sudo chown -R apache:apache /var/www/html

체크 아웃 이 문서 전체 세부 사항을.


권한은 괜찮습니다, 내 질문을 다시 읽으십시오)
alexus

3
대한 Chown : 잘못된 사용자 : '아파치 : 아파치'
numediaweb

1
아파치는 리눅스의 풍미에 따라 다른 사용자가 될 수있다. 따라서 <username> 그룹을 사용하여 Apache의 사용자와 그룹이 일반적으로 동일하므로 오류가 있는지 여부를 확인할 수 있습니다. 그런 다음 올바른 사용자를 사용하십시오. 우분투에서 가장 일반적인 것은 Apache 파일을 chowning하는 "www-data : www-data"또는 "www : www"입니다.
MontyThreeCard

2

root:apache권한 775 로 소유권을 소유 하고 httpd를 다음과 같이 실행 하는 것이 완전히 정확하더라도 apacheWordpress는 이것을 좋아하지 않습니다. 다음 apache과 같이 소유자가되기를 원합니다 wp-admin/includes/file.php.

    // Attempt to determine the file owner of the WordPress files, and that of newly created files
   $wp_file_owner = $temp_file_owner = false;
   if ( function_exists('fileowner') ) {
      $wp_file_owner = @fileowner( __FILE__ );
      $temp_file_owner = @fileowner( $temp_file_name );
  }

당신은 다음과 같습니다
wp_file_owner = 루트
temp_file_owner = 아파치

if ( $wp_file_owner !== false && $wp_file_owner === $temp_file_owner ) {
    // WordPress is creating files as the same owner as the WordPress files,
    // this means it's safe to modify & create new files via PHP.
    $method = 'direct';
    $GLOBALS['_wp_filesystem_direct_method'] = 'file_owner';
} elseif ( $allow_relaxed_file_ownership ) {
    // The $context directory is writable, and $allow_relaxed_file_ownership is set, this means we can modify files
    // safely in this directory. This mode doesn't create new files, only alter existing ones.
    $method = 'direct';
    $GLOBALS['_wp_filesystem_direct_method'] = 'relaxed_ownership';
}

$ wp_file_owner가 $ temp_file_owner와 같은 경우 계속 진행하십시오. 의견에 따르면 삭제 / 작성을 허용하지 않고 업데이트 만 허용하는 elseif에 갇히게됩니다 (Wordpress 내에서 플러그인 코드를 업데이트하여 확인했으며 작동했습니다).

참고 코드를 광범위하게 살펴 보지 않았습니다. 이것은 단지 빠른 해석 일뿐입니다. 나는 같은 문제가 있었고 일단 user : group을 전환하여 httpd 사용자가 파일 소유자이기도하므로 더 이상 FTP 자격 증명을 요구하지 않았습니다.


예, 소유자가 www-data나를 위해 일 하도록 변경 했습니다. 재미있는 워드 프레스!
ankush981

1

직접적인 대답은 아니지만 아마도 말해야 할 것입니다. 이것은 로컬 개발에 대해 이야기하지 않는 한 해결을 피해야하는 한 가지 문제입니다.이 경우 권한을 777로 설정할 수 있습니다.

그 이유는 웹 서버가 코드를 덮어 쓸 수 있다면 웹 서버에서 실행되는 모든 악성 코드도 그렇게 할 수 있기 때문입니다. ftp 자격 증명을 입력하지 않아도 몇 초만 절약 할 수있는 것보다 위험이 훨씬 더 큽니다.


0

문제는 더 이상 새로운 것이 아니지만이 문제에 2 센트를 추가하고 싶습니다.

많은 ppl은 VPS 서버에 Centos (7)를 가지고 있으며 다음 코드 라인은 문제를 해결할 수 있습니다.

Imho는 SEPress와 관련이 있으며 WordPress가 원하는대로 작업을 수행하지 못하게합니다. SELinux 가 무엇이며 무엇을하는지 설명 할 것 입니다. 참고로 소개는 다음과 같이 시작합니다.

SELinux (Security-Enhanced Linux)는 커널에 구현 된 필수 액세스 제어 (MAC) 보안 메커니즘입니다.

다음 3 단계 만 수행하면됩니다.

  • 1 터미널을 엽니 다 (또는 SSH를 통해 서버에 액세스)
  • 2 다음 코드 라인 추가 chcon -R -t httpd_sys_content_t /var/www/html/wordpress
  • 3 두 번째 코드 줄 추가 chcon -R -t httpd_sys_rw_content_t /var/www/html/wordpress

서버에서 재부팅하거나 필요한 데몬을 다시 시작하지 않아도됩니다.

모든 사람에게 도움이된다고 말하지는 않지만 SELinux를 비활성화하지 않은 사람들에게는 도움이 될 것입니다.

건배

참고 : 자신의 필요에 맞게 조정하십시오 (WordPress의 경로를 의미)

편집 : 위의 코드 라인이 원하는대로 수행 할 때 절대로 이동하지 않기 때문에 라인 define("FS_METHOD", "direct");을 사용하거나 사용했을 때 라인을 제거하십시오 wp-config.php.


0

필자의 경우 GIT에서 FTP 모드로 다시 전환하여이 문제를 해결했습니다.

더 이상 경고가 없습니다.

아마도 그것은 다른 누군가에게도 도움이 될 것입니다.

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