Как я могу запретить WordPress запрашивать ввод информации FTP при обновлении?

29

Как я могу запретить WordPress запрашивать ввод информации FTP при обновлении?

artlung
источник

Ответы:

23

Если вы редактируете свой wp-config.phpфайл, вы можете предварительно загрузить эти настройки FTP как константы, читаемые WordPress. Помните, что на общем хосте вы должны помнить о возможных последствиях для безопасности. См. Редактированиеwp-config.php для получения дополнительной информации.

Ваши настройки будут отличаться, но они работают для меня и моей настройки хостинга. Я включил некоторые из неиспользуемых констант с префиксом:

define('FS_METHOD', 'direct');
define('FTP_BASE', '/usr/home/username/public_html/my-site.example.com/wordpress/');
define('FTP_CONTENT_DIR', '/usr/home/username/public_html/my-site.example.com/wordpress/wp-content/');
define('FTP_PLUGIN_DIR ', '/usr/home/username/public_html/my-site.example.com/wordpress/wp-content/plugins/');
// define('FTP_PUBKEY', '/home/username/.ssh/id_rsa.pub');
// define('FTP_PRIKEY', '/home/username/.ssh/id_rsa');
define('FTP_USER', 'my-ftp-username');
define('FTP_PASS', 'my-ftp-password');
define('FTP_HOST', 'ftp.my-site.example.com');
// define('FTP_SSL', false);
artlung
источник
Это самый простой способ, но, как показывает пиксель ниже, проверьте права доступа к файлам. Два из трех учетных данных хранятся в базе данных, но третий записывается в файл (я не могу вспомнить, какой это у меня в голове).
Джон П Блох
12

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

pixeline
источник
1
Вы действительно не должны изменять владельца файла на владельца веб-сервера, так как это представляет потенциальную угрозу безопасности.
Отто
... если это не было плохо настроено, как это было в моем случае :)
pixeline
5

Кажется, что WordPress не только проверяет, доступны ли для записи каталоги, но и проверяет, СОБЛЮДАЕТ ли пользователь Apache эти каталоги (или, по крайней мере, владеет ли пользователь Apache временным файлом, который он создает). Обратите внимание на следующие строки кода в /wp-admin/includes/file.php: get_filesystem_method ():

if ( $temp_handle ) {
    if ( getmyuid() == @fileowner($temp_file_name) )
        $method = 'direct';
    @fclose($temp_handle);
    @unlink($temp_file_name);
}

Таким образом, быстрое решение будет заключаться в том, чтобы выполнить эту команду и передать всю установку Wordpress Apache:

sudo chown -R www-data wordpress/

Где www-data - это пользователь Apache, и, конечно же, wordpress - это ваша папка установки WordPress.

Далее я задокументировал свое решение здесь: https://ardeearam.wordpress.com/2013/02/03/solved-wordpress-asking-for-ftp-credentials-when-upgrading/

Арди Арам
источник
Эта ссылка сейчас мертва. Вот архив: web.archive.org/web/20131213005955/http://rubiks.ph/…
Сэм Уилсон
Может ли кто-нибудь объяснить детали: «$ allow_relaxed_file_ownership Необязательно. Разрешить ли запись для группы / мира».
Сэм Уилсон
@ Сэм Уилсон: теперь я перенес некоторые записи в блоге в бесплатную учетную запись WordPress. Старый домен мертв.
Арди Арам
1

При тонкой настройке Apache 2.4 через EasyApache4 для повышения скорости загрузки сайта на сервере Centos 7 PHP 7 я включил mod_pagespeed. При включении он автоматически отключит mod_ruid2 и mod_cgi (и активирует два других модуля). При отключении mod_pagespeed он не будет автоматически включать mod_ruid2 - он будет включать только mod_cgi. Без mod_ruid2 Wordpress будет запрашивать учетные данные FTP.

Нет необходимости жестко кодировать wp-config.php или устанавливать права доступа к файлам (опасно) на 777. Просто включите mod_ruid2 вручную, перезапустите Apache, и проблема с разрешениями FTP / файла будет решена. Wordpress и плагины теперь можно обновлять как обычно, а мультимедиа загружать в галерею Wordpress. Это работает сразу.

Я только что проверил, что при переходе с MPM Prefork на Worker он отключит mod_ruid2. При возврате из Worker в Prefork он не активирует mod_ruid2, вызывая проблему, описанную в этом посте.

В обоих случаях ключ должен проверить и включить mod_ruid2.

Надеюсь, что помог.

itmonitor
источник
-1

1) Я не мог согласиться с ответом выше, потому что он слишком общий

1a) Я просто не хочу рекурсивно менять владельца всех моих файлов (как при использовании дробовика, чтобы убить комара). Тем более, что это прекрасно работает раньше.

1b) WordPress, обладающий «подлым» свойством, внезапно попросит у вас учетные данные для ftp

2) Поэтому я начал копать глубже, используя его лидерство Арди Арама. Я проверил файл file.php и проверил его принадлежность. Похоже, файл file.php зависит от его собственного владельца (который был неправильно установлен как root).

Исправление: chown www file.php

ПРИМЕЧАНИЕ. Замените www на то, каким является ваш дистрибутив или настройки (вы можете использовать ps aux | egrep "php | http" и посмотреть, кто является его владельцем в первом столбце.

Я надеюсь, что это поможет кому-то еще расстроиться из-за этого. Я даже не понимаю, почему WordPress не «жалуется» в первую очередь, а затем предлагает использовать альтернативу FTP. Теперь это как «особенность», которая внезапно вводится.

th3penguinwhisperer
источник
Добро пожаловать в WPSE, th3penguinwhisperer. Пожалуйста, не стесняйтесь принять тур . «Ответ выше», ответы могут изменить порядок в любое время в результате голосования людей. Хотелось бы, чтобы вы отредактировали свой пост, чтобы указать, чей ответ вы имеете в виду, чтобы было понятно Спасибо за добавление ваших мыслей!
Тим Мэлоун