WordPress Update - Обычно это связано с несогласованными правами доступа к файлам: wp-admin/includes/update-core.php

18 мар. 2021 г., 17:32:21
Просмотры: 23.4K
Голосов: 0

У меня есть несколько WordPress сайтов на сервере с root-доступом, и при создании сервера всё работало нормально - WordPress, плагины и темы обновлялись без проблем. Но недавно я получил ошибку, которая обычно указывает на проблемы с правами доступа (хотя права доступа выглядят корректными).

Ошибка при обновлении WordPress:

Загрузка обновления с https://downloads.wordpress.org/release/fa_IR/wordpress-5.7.zip…

Подлинность wordpress-5.7.zip не может быть проверена, так как подпись не найдена.

Распаковка обновления…

Обновление не может быть установлено, так как мы не можем скопировать некоторые файлы. Обычно это связано с несогласованными правами доступа к файлам: wp-admin/includes/update-core.php

Установка не удалась.

Вот что я сделал для исследования проблемы:

ls -ld /home
drwx--x--x 26 root root 4096 Mar 9 20:03 home
ls -ld /home/my_user
drwx--x--x 26 my_user my_user 4096 Mar 9 20:03 /home/my_user/
ls -ld /home/my_user/public_html
drwxr-x--- 26 my_user nobody 4096 Mar 9 20:03 /home/my_user/public_html/

Также все файлы внутри public_html имеют права доступа 0644, а все директории - 0755.

cd /home/my_user/public_html/
find . -type f -exec chmod 644 {} \; && find . -type d -exec chmod 755 {} \;
find . -type f -exec chown my_user:my_user {} \; && find . -type d -exec chown my_user:my_user {} \;

Результат команды lsattr:

lsattr /home/my_user/public_html/wp-admin/includes/update-core.php
-------------e-- /home/my_user/public_html/wp-admin/includes/update-core.php

Итак, на мой взгляд, с правами доступа и владением всё в порядке.

Проверка прав доступа и владения для wp-admin, wp-admin/includes и wp-admin/includes/update-core.php не выявила проблем, но я не понимаю, почему WordPress не может установить плагины, темы или обновить себя.

PHP-обработчик - suphp (я также пробовал с cgi и lsapi), но это ничего не изменило.

Конфигурация Apache следующая:

MPM: mod_mpm_prefork
Apache modules (некоторые из них):
mod_cgi
mod_lsapi
mod_mpm_prefork
mod_suexec
mod_suphp

Стоит отметить, что я создал файл info.php и запустил его в браузере - всё работает. Затем я изменил владельца на root:root, и во втором случае получил ошибку 403 (что ожидаемо), потом вернул обратно на my_user:my_user

Группа Apache - nobody, и владелец директории public_html установлен как my_user:nobody. Мой сайт и другие сайты работают нормально, но единственная проблема возникает при обновлении или попытке установить плагин/тему/новое обновление.

Я проверил лог-файлы, но там ничего не было зарегистрировано.

4
Комментарии

Это происходит в браузере или вы используете wp-cli для обновления WordPress?

Pat J Pat J
18 мар. 2021 г. 22:34:17

Я использую веб-браузер

Saeed Saeed
18 мар. 2021 г. 22:49:56

Под каким пользователем работает ваш веб-сервер? Это my_user или что-то вроде www-data, apache или httpd? Если это не my_user, то именно поэтому WordPress не может заменить файлы.

Pat J Pat J
18 мар. 2021 г. 23:38:24

Это my_user, когда я запускаю top и вижу пользователя для lsphp

Saeed Saeed
19 мар. 2021 г. 10:06:45
Все ответы на вопрос 1
2

Я решил эту проблему, сделав пользователя веб-сервера владельцем и группой всех файлов в каталоге WordPress.

Я выяснил, что пользователь веб-сервера - это daemon, с помощью команды:

ps aux | egrep '(apache|httpd)'

Затем я изменил права доступа с помощью:

sudo chown -R daemon:daemon /ваш-путь-до-wordpress
17 апр. 2021 г. 19:32:48
Комментарии

Спасибо, но я переустановил ОС, и теперь всё работает нормально, однако это не решило мою проблему, потому что я уже пробовал это

Saeed Saeed
17 апр. 2021 г. 20:24:45

Вау, поискал в интернете, и это, кажется, сработало и для меня на Xampp Mac, даже без проверки пользователя веб-сервера: sudo ........daemon:daemon /wordpress-folder спасибо

alex alex
12 янв. 2022 г. 19:35:23