Как я могу запретить WordPress запрашивать у меня информацию о FTP при выполнении обновлений?
Как я могу запретить WordPress запрашивать у меня информацию о FTP при выполнении обновлений?
5 answers
Если вы отредактируете свой файл 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);
Проверьте права собственности на файл. Когда пользователь, у которого работает apache, может писать в каталоги wordpress, тогда интегрированный процесс обновления работает без ftp. Учетные данные FTP предназначены для того, чтобы, если веб-сервер не имеет прав доступа к вашим файлам, wordpress запрашивает у вас данные вашего FTP и пытается использовать их для передачи по FTP на тот же сервер, на котором он находится, чтобы иметь возможность записывать необходимые файлы.
Похоже, что WordPress не только проверяет, доступны ли каталоги для записи, но и проверяет, владеет ли пользователь Apache каталогами (или, по крайней мере, владеет ли пользователь Apache временным файлом, который он создает). Обратите внимание на эти строки кода в /wp-admin/includes/file.php : get_filesystem_метод():
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-данные - это пользователь Apache, и, конечно же, wordpress - это ваша папка установки WordPress.
Я дополнительно задокументировал свое решение здесь: https://ardeearam.wordpress.com/2013/02/03/solved-wordpress-asking-for-ftp-credentials-when-upgrading/
При точной настройке 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 на рабочий он отключит mod_ruid2. При возврате от Worker к Prefork он не включит mod_ruid2, что приведет к проблеме, описанной в этом сообщении.
В обоих случаях ключом является проверьте и включите mod_ruid2.
Надеюсь, что это помогло.
1) Я не мог согласиться с приведенным выше ответом, потому что он был слишком общим
1a) Я просто не хочу рекурсивно менять владельца всех своих файлов (как при использовании дробовика для убийства мускито). Тем более, что это прекрасно работало и раньше.
1b) Wordpress, имеющий "скрытую" функцию, внезапно запрашивает у вас учетные данные для ftp
2) Итак, я начал копать глубже, используя его лидерство Арди Арама. Я пошел проверить, в file.php файл и проверенный его собственность. Похоже, что file.php зависит от его собственного владения (которое было неправильно установлено в качестве корневого).
Исправлено: chown www file.php
ПРИМЕЧАНИЕ: Замените www любым вашим дистрибутивом или настройками (вы можете использовать ps aux|egrep "php|http" и посмотреть, кому он принадлежит в первом столбце.
Я надеюсь, что это поможет кому-то другому не расстраиваться по этому поводу. Я даже не понимаю, почему wordpress в первую очередь не "жалуется", а затем предлагает использовать FTP альтернатива. Теперь это похоже на "функцию", которая внезапно появляется.