Для выполнения запрошенного действия 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.

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

Alexus
источник
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.

w00t
источник
Да, смена владельца, чтобы 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.

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

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

MarkPraschan
источник