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?