james
  • 0
Учитель

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

  • 0

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

Share
  1. Если вы отредактируете свой 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);
    
    • 0
  2. Проверьте право собственности на файл. Когда пользователь, который запускает apache, может писать в каталоги wordpress, тогда интегрированный процесс обновления работает без ftp. Учетные данные FTP предназначены для того, чтобы, если веб-сервер не имеет правильных привилегий для ваших файлов, тогда wordpress запрашивает у вас ваши данные FTP и пытается использовать их для FTP обратно на тот же сервер, на котором он находится, чтобы иметь возможность записать нужные ему файлы.

    • 0
  3. Кажется, что 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://ardeeram.wordpress.com/2013/02/03/solved-wordpress-asking-for-ftp-credentials-when-upgrading/

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

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

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

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

    1b) WordPress имеет «подлую» функцию, которая внезапно запрашивает у вас учетные данные для ftp.

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

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

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

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

    • 0

Оставить ответ

You must login to add an answer.