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

2 июн. 2016 г., 19:13:57
Просмотры: 213K
Голосов: 85

Я следую инструкции Изменение прав доступа к файлам « 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 данных.

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

7
Комментарии

Это локальная установка на localhost? Если да, то смотрите: http://wordpress.stackexchange.com/questions/19649/wordpress-on-localhost-lamp-doesnt-let-me-install-plugins

Greg McMullen Greg McMullen
2 июн. 2016 г. 20:55:03

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

alexus alexus
2 июн. 2016 г. 22:32:37

@alexus Похоже, что сейчас ваши файлы принадлежат root.apache. Вы пробовали установить apache.apache вместо nobody?

Tim Malone Tim Malone
3 июн. 2016 г. 00:28:43

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

alexus alexus
3 июн. 2016 г. 00:37:49

@alexus Хорошо, еще один вариант - установите FS_METHOD в 'direct' в wp-config.php (https://codex.wordpress.org/Editing_wp-config.php#WordPress_Upgrade_Constants)

Tim Malone Tim Malone
3 июн. 2016 г. 00:43:18

@TimMalone согласно https://codex.wordpress.org/Editing_wp-config.php#WordPress_Upgrade_Constants - Обратите внимание, что ваш выбор здесь имеет серьезные последствия для безопасности.

alexus alexus
3 июн. 2016 г. 00:52:40
Показать остальные 2 комментариев
Все ответы на вопрос 7
9
185

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

define( 'FS_METHOD', 'direct' );

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

22 июн. 2017 г. 17:34:31
Комментарии

сработало у меня, если только у вас нет проблем с правами доступа в файловой системе. Кстати, я добавил это в самое начало файла wp-config.php

Toskan Toskan
28 сент. 2018 г. 21:12:51

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

JamesHoux JamesHoux
18 мая 2019 г. 18:51:38

после добавления этого я получаю следующую ошибку:

Update Failed: The update cannot be installed because we will be unable to copy some files. This is usually due to inconsistent file permissions.

Shawn Shawn
18 мар. 2020 г. 05:57:35

Это потенциально опасно для пользователей, которые переносят свои сайты целиком с локального сервера на рабочий. Я бы предпочел, чтобы вы использовали метод @Syamraj K по изменению прав файлов или удалили это из вашего wp-config.php перед переносом в онлайн

Cedric Ipkiss Cedric Ipkiss
10 нояб. 2020 г. 03:48:04

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

Jacky Supit Jacky Supit
14 февр. 2021 г. 16:31:03

Если вы используете WP CLI, вы можете выполнить эту команду вместо этого: wp config set FS_METHOD direct. Это изменит файл wp-config.php

Flimm Flimm
2 сент. 2022 г. 11:00:22

Пожалуйста, объясните, что это делает, прежде чем многие бездумно вставят это в свой конфигурационный файл.

Altimus Prime Altimus Prime
5 апр. 2023 г. 06:53:57

WP размещен на Google Cloud compute: Я добавил define( 'FS_METHOD', 'direct' ); в wp-config, затем установил права с помощью sudo chown -R www-data:www-data /home/mysitenam/public_html/, обновил плагин и вернул права обратно с помощью sudo chown -R mysitename:mysitename /home/mysitename/public_html/

Patrik Rikama-Hinnenberg Patrik Rikama-Hinnenberg
3 мая 2024 г. 17:46:31
Показать остальные 4 комментариев
7
32

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

Для исправления этой ситуации вам необходимо предоставить соответствующие разрешения.

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

sudo chown -R apache:apache /var/www/html
5 авг. 2016 г. 09:35:11
Комментарии

права в порядке, перечитай мой вопрос)

alexus alexus
5 авг. 2016 г. 21:55:08

chown: неверный пользователь: ‘apache:apache’

numediaweb numediaweb
2 февр. 2018 г. 11:46:50

Помни, что Apache может работать под разными пользователями в разных дистрибутивах Linux. Поэтому ты можешь попробовать команду groups <username> и посмотреть, выдаст ли она ошибку, так как пользователь и группа для Apache обычно одинаковы. Затем используй правильного пользователя. Наиболее распространенные варианты в Ubuntu - это "www-data:www-data" или "www:www" для chown файлов Apache.

MontyThreeCard MontyThreeCard
25 янв. 2019 г. 18:09:55

После того как я смог найти правильное имя пользователя, это сработало отлично (см. также команду для вывода списка всех пользователей)

Top-Master Top-Master
8 янв. 2020 г. 13:38:45

Если вы хотите использовать это на OSX, используйте _www:_www (Mojave, не знаю, что будет в других версиях)

Larzan Larzan
6 мая 2020 г. 17:08:58

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

Cedric Ipkiss Cedric Ipkiss
10 нояб. 2020 г. 03:46:45

Сработало отлично :) избегайте использования define( 'FS_METHOD', 'direct' );

Himanshu Rawat Himanshu Rawat
7 мар. 2021 г. 12:27:40
Показать остальные 2 комментариев
3
10

Хотя совершенно правильно иметь владельца как root:apache с правами 775, и httpd, работающий под пользователем apache, WordPress это не нравится. Он хочет, чтобы владельцем был apache, согласно wp-admin/includes/file.php:

    // Попытка определить владельца файлов WordPress и вновь создаваемых файлов
   $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 создает файлы с тем же владельцем, что и файлы WordPress,
    // это означает, что можно безопасно изменять и создавать новые файлы через PHP.
    $method = 'direct';
    $GLOBALS['_wp_filesystem_direct_method'] = 'file_owner';
} elseif ( $allow_relaxed_file_ownership ) {
    // Директория $context доступна для записи, и $allow_relaxed_file_ownership установлен, это означает, что мы можем безопасно изменять файлы
    // в этой директории. Этот режим не создает новые файлы, а только изменяет существующие.
    $method = 'direct';
    $GLOBALS['_wp_filesystem_direct_method'] = 'relaxed_ownership';
}

Если $wp_file_owner совпадает с $temp_file_owner, то процесс продолжается. В вашем случае сработает elseif, который, согласно комментарию, не разрешает удаление/создание, а только обновление (я проверил это, обновив код плагина из WordPress, и это сработало).

Примечание: я не углублялся в код, это лишь моя быстрая интерпретация. У меня была такая же проблема, и как только я изменил пользователя:группу так, чтобы пользователь httpd также был владельцем файлов, запрос учетных данных FTP прекратился.

23 авг. 2017 г. 20:14:32
Комментарии

Да, смена владельца на www-data сработала у меня. Забавный WordPress!

ankush981 ankush981
30 авг. 2018 г. 06:45:02

интересная находка, я посмотрю на это... спасибо +1 от меня)

alexus alexus
16 дек. 2019 г. 19:07:15

На всякий случай, если у кого-то такая же проблема - это сработало только после того, как я изменил владельца ВСЕХ файлов/директорий WordPress на пользователя веб-сервера. Просто смена владельца для директории wp-content и всех её поддиректорий не решила проблему. Пришлось рекурсивно изменить владельца для корневой директории WordPress и всех вложенных файлов, чтобы это заработало.

Ambulare Ambulare
5 февр. 2021 г. 16:29:32
0

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

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

3 июн. 2016 г. 06:01:35
0

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

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

На мой взгляд, всё дело в 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)

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

2 мая 2018 г. 02:07:39
2

добавьте следующее в ваш файл wp-config.php между двумя комментариями

/* Add any custom values between this line and the "stop editing" line. */

define( 'FS_METHOD', 'direct' );

/* That's all, stop editing! Happy publishing. */
14 февр. 2023 г. 16:05:25
Комментарии

Это то же самое, что и существующий ответ с наибольшим количеством голосов, за исключением комментариев. Разве это действительно важно?

Rup Rup
15 февр. 2023 г. 12:45:39

Я добавил ответ, потому что знание того, куда вставить код, действительно поможет другому новичку, такому как я :)

shimii shimii
15 февр. 2023 г. 17:41:58
0

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

Предупреждение больше не появляется.

Возможно, это поможет и кому-то другому.

16 авг. 2018 г. 21:12:32