it-swarm.xyz

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

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

29
artlung

Если вы отредактируете свой 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);
23
artlung

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

12
pixeline

Кажется, что 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/

5
Ardee Aram

При тонкой настройке 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.

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

1
itmonitor