WordPress Update - Обычно это связано с несогласованными правами доступа к файлам: wp-admin/includes/update-core.php
У меня есть несколько 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
. Мой сайт и другие сайты работают нормально, но единственная проблема возникает при обновлении или попытке установить плагин/тему/новое обновление.
Я проверил лог-файлы, но там ничего не было зарегистрировано.

Я решил эту проблему, сделав пользователя веб-сервера владельцем и группой всех файлов в каталоге WordPress.
Я выяснил, что пользователь веб-сервера - это daemon, с помощью команды:
ps aux | egrep '(apache|httpd)'
Затем я изменил права доступа с помощью:
sudo chown -R daemon:daemon /ваш-путь-до-wordpress

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