it-swarm.com.ru

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

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

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

21
alexus

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

define( 'FS_METHOD', 'direct' );

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

42
Narendra Solanki

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

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

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

Sudo chown -R Apache:apache /var/www/html

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

12
Syamraj K

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

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

1
Mark Kaplun

Несмотря на то, что совершенно правильно иметь права доступа 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.

1
w00t

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

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

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

0
MarkPraschan

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

Многие пользователи имеют 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
Charles