Для выполнения запрошенного действия WordPress необходимо получить доступ к вашему веб-серверу. пожалуйста, введите ваш ftp


28

Я слежу за изменением прав доступа к файлам «WordPress Codex , но когда я пытаюсь обновить и / или установить 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
$ 

Я хотел бы иметь возможность выполнять запрошенное действие ( installи / или update) /wp-admin без использования учетных данных FTP.

Как я могу это сделать?


1
Это локальная установка? Если это так, см .: wordpress.stackexchange.com/questions/19649/…
— Грег Макмаллен

1
@GregMcMullen нет, это НЕ установка localhost и «принятый» ответ по ссылке, на которую вы комментируете, - рекурсивно изменить владельца каталога WordPress nobody- это не будет работать для меня из-за httpdзапусков как apache.
— alexus

@alexus Похоже, ваши файлы на данный момент принадлежат root.apache. Вы пробовали apache.apache вместо никого?
— Тим Мэлоун

@TimMalone настройка файлы / директории, apache.apacheили root.apacheне будет никакой разницы, до тех пор , как httpdработают как apacheи apache«s uidявляется частью apache gid» группы с, это все равно, потому что мои права установлено g+w.
— alexus

@alexus Хорошо, еще кое-что попробовать - установить FS_METHOD на «direct» в wp-config.php ( codex.wordpress.org/… )
— Тим Мэлоун

Ответы:


52

Добавьте следующее в wp-config.php:

define( 'FS_METHOD', 'direct' );

Дайте мне знать, как это работает для вас.



работал для меня, если у вас нет плохих разрешений в файловой системе. Кстати, я добавил его в самом верху wp-config.php
— Toskan

Обязательно прочитайте пост, на который ссылается Алексус, прежде чем использовать этот метод. Этот метод определенно работает (он решил проблему для меня), но вам определенно не следует использовать этот метод в среде с общим хостингом или в любой среде с повышенным риском, где вы можете поставить под угрозу безопасность, выполнив это.
— JamesHoux

16

Это означает, что WordPress имеет ограниченные права на внесение изменений в папку, в которой он был установлен.

Для того, чтобы это исправить, все, что вам нужно сделать, это предоставить необходимые разрешения для того же.

Выполните следующую команду в терминале / замазке / командной строке после подключения к серверу по SSH:

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

Ознакомьтесь с этой статьей для получения полной информации.


разрешения в порядке, перечитайте мой вопрос)
— alexus

3
chown: недействительный пользователь: 'apache: apache'
— numediaweb

2
Помните, что Apache может быть разными пользователями в разных версиях Linux. Таким образом, вы можете попробовать группы <username> и посмотреть, нет ли ошибок или нет, так как пользователь и группа для Apache обычно одинаковы. Тогда используйте правильного пользователя. Наиболее распространенными в Ubuntu являются «www-data: www-data» или «www: www» для сокращения файлов Apache.
— MontyThreeCard

2

Хотя это совершенно правильно иметь права владения, как root:apacheс разрешениями 775, и httpd для запуска apache, Wordpress не нравится это. Это хочет, чтобы владелец был 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 = root
temp_file_owner = apache

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работать на меня. Забавный WordPress!
— ankush981

1

Не прямой ответ, но, вероятно, нужно сказать - это одна проблема, которую вам следует избегать, если вы не говорите о локальной разработке, и в этом случае вы можете просто установить разрешения на 777.

Причина в том, что если веб-сервер может перезаписать ваш код, то любой вредоносный код, работающий на нем, сможет это сделать. Риск намного больше, чем удобство экономии нескольких секунд без необходимости вводить учетные данные ftp.


0

Хотя вопрос уже не нов, я хочу добавить свои два цента и по этому вопросу.

Многие пользователи имеют Centos (7) на своем VPS-сервере, и следующие строки кода могут решить их проблему.

Imho имеет полное отношение к SELinux, который не позволяет WordPress выполнять свою работу так, как хотелось бы. Это объясняет, что такое SELinux и что он делает. К вашему сведению, введение начинается с:

Security-Enhanced Linux (SELinux) - это механизм безопасности с обязательным контролем доступа (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)

edit: обязательно удалите строку, define("FS_METHOD", "direct");когда она используется / используется, wp-config.phpпотому что это абсолютно не пойдет, когда строки кода выше делают так, как хотели.


0

В моем случае я решил эту проблему, переключившись с GIT обратно в режим FTP.

Нет больше предупреждений.

Возможно, это поможет кому-то еще.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.