Рейтинг:0

Wordpress запрашивает FTP при удалении плагинов

флаг pk

Wordpress запрашивает у меня учетные данные FTP, когда я пытаюсь удалить или установить плагины. Я знаю, что это связано с разрешениями, но я не смог понять это. У меня есть системный пользователь Linux XYZ, а apache2 работает как www-data. Это работает:

sudo chown www-data:www-data -R /path/to/wordpress
sudo chmod 700 -R /путь/к/wordpress

Но это небезопасно. Моя изначально запланированная конфигурация была:

sudo chown XYZ: www-data -R /path/to/wordpress
sudo chmmod 750 -R /путь/к/wordpress
sudo chmod 770 -R /путь/к/wordpress/wp-контенту

Согласно документам WordPress, wp-content — единственная папка, к которой веб-сервер должен иметь доступ для записи. Он состоит из папок плагинов и тем.

Но это не работает. Я провел несколько часов в Интернете, но пока ничего не помогло, и я не знаю, что еще попробовать. Каковы правильные разрешения, чтобы разрешить автоматические обновления и установку плагинов, не предоставляя веб-серверу доступ на запись ко всему?

edit: по какой-то причине следующее не работает:

sudo chown XYZ: www-data -R /path/to/wordpress
sudo chmod 770 -R /путь/к/wordpress

Я думал, что он идентичен первому варианту выше, предоставляя www-data доступ для записи ко всему. Но это не помогает.

Это мой wp-config:

<?php
// ** Настройки MySQL — вы можете получить эту информацию с вашего веб-хостинга ** //
/** Имя базы данных для WordPress */
определить('ИМЯ_БД', 'XXX');

/** Имя пользователя базы данных MySQL */
определить('DB_USER', 'XXX');

/** Пароль базы данных MySQL */
определить('DB_PASSWORD', 'XXX');

/** Имя хоста MySQL */
определить('DB_HOST', '127.0.0.1:XXX');

/** Кодировка базы данных для использования при создании таблиц базы данных. */
определить('DB_CHARSET', 'utf8mb4');

/** Тип сортировки базы данных. Не меняйте это, если сомневаетесь. */
определить('DB_COLLATE', 'utf8mb4_0900_ai_ci');

определить('AUTH_KEY', 'XXX');
определить('SECURE_AUTH_KEY', 'XXX');
определить('LOGGED_IN_KEY', 'XXX');
определить('NONCE_KEY', 'XXX');
определить('AUTH_SALT', 'XXX');
определить('SECURE_AUTH_SALT', 'XXX');
определить('LOGGED_IN_SALT', 'XXX');
определить('NONCE_SALT', 'XXX');

/**#@-*/

/**
 * Префикс таблицы базы данных WordPress.
 *
 * Вы можете иметь несколько установок в одной базе данных, если вы дадите каждой
 * уникальный префикс. Пожалуйста, только цифры, буквы и символы подчеркивания!
 */
$table_prefix = 'ХХХ';

/**
 * Для разработчиков: режим отладки WordPress.
 *
 * Измените это значение на true, чтобы включить отображение уведомлений во время разработки.
 * Разработчикам плагинов и тем настоятельно рекомендуется использовать WP_DEBUG
 * в своей среде разработки.
 *
 * Информацию о других константах, которые можно использовать для отладки, см.
 * посетите документацию.
 *
 * @ссылка https://wordpress.org/support/article/debugging-in-wordpress/
 */
определить('WP_DEBUG', ложь);

/* Добавьте любые пользовательские значения между этой строкой и строкой «остановить редактирование». */



/* Все, прекратите редактирование! Удачной публикации. */

/** Абсолютный путь к каталогу WordPress. */
если ( ! определено ('ABSPATH') ) {
    определить('ABSPATH', __DIR__. '/');
}

/** Устанавливает переменные WordPress и включаемые файлы. */
require_once ABSPATH . 'wp-settings.php';

Это мой php.ini без комментариев:

двигатель = включен

short_open_tag = Выкл.

точность = 14

output_buffering = 4096

zlib.output_compression = Выкл.

implicit_flush = Выкл.

unserialize_callback_func =

сериализовать_точность = -1

open_basedir = "/var/www/"

disable_functions = exec,passthru,shell_exec,system,proc_open,popen,curl_exec,curl_multi_exec,show_source,highlight_file,pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch, pcntl_get_last_error, pcntl_strerror, pcntl_sigprocmask, pcntl_sigwaitinfo, pcntl_sigtimedwait, pcntl_exec, pcntl_getpriority, pcntl_setpriority, pcntl_async_signals, pcntl_unshare,

отключить_классы =

zend.enable_gc = Вкл.

zend.exception_ignore_args = Вкл.

expose_php = Выкл.

максимальное_время_исполнения = 30

максимальное_входное_время = 60

memory_limit = 128M

error_reporting = E_ALL & ~E_DEPRECATED & ~E_STRICT

display_errors = Выкл.

display_startup_errors = Выкл.

log_errors = Вкл.

log_errors_max_len = 1024

ignore_repeated_errors = Выкл.

ignore_repeated_source = Выкл.

report_memleaks = Вкл.

variable_order = "GPCS"

request_order = "ГП"

register_argc_argv = Выкл.

auto_globals_jit = Вкл.

post_max_size = 256M

auto_prepend_file =

auto_append_file =

default_mimetype = "текст/html"

default_charset = "UTF-8"

doc_root =

user_dir =

enable_dl = Выкл.

file_uploads = Вкл.

upload_tmp_dir = "/tmp"

upload_max_filesize = 250M

max_file_uploads = 20

allow_url_fopen = Выкл.

allow_url_include = Выкл.

default_socket_timeout = 60

cli_server.color = Вкл.

pdo_mysql.default_socket=

SMTP = локальный хост

смтп_порт = 25

mail.add_x_header = Выкл.


odbc.allow_persistent = Вкл.

odbc.check_persistent = Вкл.

odbc.max_persistent = -1

odbc.max_links = -1

odbc.defaultlrl = 4096

odbc.defaultbinmode = 1

mysqli.max_persistent = -1

mysqli.allow_persistent = Вкл.

mysqli.max_links = -1

mysqli.default_port = 3306

mysqli.default_socket =

mysqli.default_host =

mysqli.default_user =

mysqli.default_pw =

mysqli.reconnect = Выкл.

mysqlnd.collect_statistics = Вкл.

mysqlnd.collect_memory_statistics = Выкл.

pgsql.allow_persistent = Вкл.

pgsql.auto_reset_persistent = Выкл.

pgsql.max_persistent = -1

pgsql.max_links = -1

pgsql.ignore_notice = 0

pgsql.log_notice = 0

bcmath.масштаб = 0

session.save_handler = файлы

сеанс.use_strict_mode = 0

сеанс.use_cookies = 1

session.use_only_cookies = 1

session.name = PHPSESSID

сеанс.auto_start = 0

session.cookie_lifetime = 0

session.cookie_path = /

session.cookie_domain =

session.cookie_httponly =

session.cookie_samesite =

session.serialize_handler = php

session.gc_probability = 0

session.gc_divisor = 1000

session.gc_maxlifetime = 1440

session.referer_check =

session.cache_limiter = без кэша

session.cache_expire = 180

сеанс.use_trans_sid = 0

session.sid_length = 26

session.trans_sid_tags = "a=href,area=href,frame=src,form="

session.sid_bits_per_character = 5

зенд.утверждения = -1

tidy.clean_output = Выкл.

soap.wsdl_cache_enabled=1

soap.wsdl_cache_dir="/tmp"

soap.wsdl_cache_ttl=86400

soap.wsdl_cache_limit = 5

ldap.max_links = -1

Я установил php следующим образом:

sudo apt установить php libapache2-mod-php php-mysql

Это помогает @GeraldSchneider?

Tim avatar
флаг gp
Tim
Это действительно неудобно. Здесь есть документация https://wordpress.org/support/article/change-file-permissions/
lampstackxyz avatar
флаг pk
Я читал это. Не помогает.
Tim avatar
флаг gp
Tim
Я удалил ответ, который был не совсем правильным. К сожалению, вам, вероятно, придется узнать о разрешениях Unix и требованиях Wordpress или найти хороший учебник.Мне всегда трудно, когда я должен это делать, поэтому я пишу сценарий.
флаг in
Я не думаю, что ваша проблема связана с файловой системой, каждый опубликованный вами вариант должен работать. Пожалуйста, добавьте вашу конфигурацию PHP и файл wp-config.php. PHP загружается как модуль или через fpm?
lampstackxyz avatar
флаг pk
@GeraldSchneider Я указал эти детали в исходном вопросе. У вас есть идеи, почему chown XZY:www-data с chmod 770 не работает, а chown www-data:www-data chmod 700 работает? Вчера всю ночь читал блоги, форумы... Ничего не понял.
Рейтинг:0
флаг ar

Добавлять

определить('FS_METHOD','прямой');

на ваш wp-config.php файл.

Ответить или комментировать

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