Каталог статей
При обслуживании сайта WordPress в среде HestiaCP вы можете столкнуться с сообщением об ошибке «Обновление не может быть выполнено, поскольку некоторые файлы не могут быть скопированы».
Это предупреждение может показаться пугающим, но на самом деле это одна из самых распространенных проблем, связанных с правами доступа в WordPress.
Обычно это происходит во время автоматического обновления плагинов, тем или ядра WordPress.
На первый взгляд, это просто «неудачное обновление», но первопричина почти всегда указывает на одно и то же: несоответствие прав доступа к файлам.
Хорошая новость в том, что, как только вы поймете пользовательскую модель HestiaCP, вы сможете полностью решить проблему всего несколькими командами.
Первопричина проблемы: Почему возникает несоответствие прав доступа?
В среде HestiaCP каждый веб-сайт (виртуальный хост) работает под отдельным системным пользователем.
Между тем, процессы веб-сервиса (PHP-FPM / Nginx) также выполняются под учетной записью пользователя системы, соответствующей веб-сайту.
Следовательно, когда владелец некоторых плагинов или файлов темы становится root-пользователем или другим пользователем, пользователи веб-сайта не будут иметь права изменять или удалять эти файлы.
В процессе обновления WordPress необходимо скопировать и перезаписать эти файлы. Если права доступа указаны неверно, обновление будет прервано, и отобразится указанное выше сообщение.
Основная причина сводится к одному предложению: владелец файла больше не является пользователем системы веб-сайта.
Решение: Восстановите права доступа к файлам в SSH-терминале.
Ниже приведены проверенные шаги по устранению неполадок; просто выполните команды последовательно в SSH-терминале.
Пожалуйста, замените your_user в примере на ваше имя пользователя HestiaCP, а yourdomain.com — на ваше фактическое доменное имя.
Весь процесс не требует перезапуска сервиса и не повлияет на существующие данные сайта.
Весь процесс занимает около двух минут, и даже новички могут успешно выполнить его с первой попытки, просто скопировав и вставив текст.
Перед продолжением рекомендуется убедиться, что на терминал можно войти как администратор, чтобы избежать разрыва соединения во время процесса.
Шаг 1: Определение переменных
Сначала установите в терминале две переменные: имя пользователя и имя домена, чтобы последующие команды можно было использовать напрямую.
# 设置你的 Hestia 用户名和域名
HESTIA_USER="your_user"
HESTIA_DOMAIN="yourdomain.com"После определения переменных все последующие команды могут напрямую ссылаться на них, избегая необходимости ручного ввода каждый раз.
Шаг 2: Восстановление прав доступа к файлам (восстановление ядра)
Необходимо принудительно вернуть системного владельца и группу пользователей всех файлов в каталоге веб-сайта соответствующему пользователю HestiaCP.
chown -R $HESTIA_USER:$HESTIA_USER /home/$HESTIA_USER/web/$HESTIA_DOMAIN/public_htmlЭтот этап является ключевым во всем процессе ремонта; как только вопрос о праве собственности решен, проблема устранена.

Если команда chown сообщает, что путь не существует, сначала проверьте, соответствует ли написание переменной фактическому каталогу.
Шаг 3: Сбросьте стандартные права доступа к файлам и каталогам HestiaCP.
Далее установите права доступа к каталогу на 755, а права доступа к файлам — на 644.
# 修复所有目录权限为 755
find /home/$HESTIA_USER/web/$HESTIA_DOMAIN/public_html -type d -exec chmod 755 {} \;
# 修复所有文件权限为 644
find /home/$HESTIA_USER/web/$HESTIA_DOMAIN/public_html -type f -exec chmod 644 {} \;Эти два набора разрешений являются стандартными конфигурациями для HestiaCP, которые позволяют одновременно обеспечивать как безопасность, так и возможность записи.
Скрипт для запуска в один клик (рекомендуется)
Если вы хотите выполнить все вышеперечисленные операции одновременно, вы можете использовать следующий скрипт, запускаемый одним щелчком мыши.
Просто замените your_user и chenweiliang.com на ваши фактические значения, вставьте весь абзац в терминал и нажмите Enter.
USER="your_user" DOMAIN="chenweiliang.com" && chown -R $USER:$USER /home/$USER/web/$DOMAIN/public_html && find /home/$USER/web/$DOMAIN/public_html -type d -exec chmod 755 {} \; && find /home/$USER/web/$DOMAIN/public_html -type f -exec chmod 644 {} \;Дополнительные советы: Чтобы ремонт был более тщательным
Исправление прав доступа устраняет лишь непосредственную причину проблемы с «зависанием обновления». Для полного решения этой проблемы стоит предпринять еще два действия.
Во-первых, удалите остаточные файлы, оставшиеся после прерванного обновления; во-вторых, научитесь выполнять фоновое восстановление без использования SSH.
Эти два шага несложны, но они могут значительно снизить вероятность повторения подобных проблем.
Все последующие операции основаны на предположении, что права доступа только что были восстановлены. Выполнение их по порядку даст наилучшие результаты.
Если на вашем сервере размещено несколько сайтов, вы также можете организовать этот процесс в виде шаблона скрипта для многократного использования.
Удалите временные остатки обновления.
После восстановления прав доступа рекомендуется удалить все временные файлы, оставшиеся после прерывания обновления WordPress.
Эти остаточные файлы находятся в каталоге wp-content/upgrade. Если их не удалить, следующее обновление может снова зависнуть.
rm -rf /home/$USER/web/$DOMAIN/public_html/wp-content/upgrade/*Не хотите использовать SSH? Настройте это вручную в бэкэнде HestiaCP.
Если вам неудобно использовать командную строку, вы также можете войти в панель управления HestiaCP и сбросить права доступа через файловый менеджер.
Перейдите в меню «Файлы» (файловый менеджер) и найдите папку /home/USER/web/DOMAIN/public_html/wp-content.
Щелкните правой кнопкой мыши папку с плагинами или темами и выберите «Сбросить разрешения».
После сброса прав доступа вернитесь в панель администратора WordPress и снова нажмите «Обновить»; обычно все должно пройти без проблем.
Если после выполнения операции на стороне сервера ошибка сохраняется, просто вернитесь к описанному выше решению с использованием SSH и снова подтвердите права собственности.
резюме
Если вы видите сообщение «Обновление не может быть выполнено, поскольку некоторые файлы не могут быть скопированы», не спешите переустанавливать систему. В большинстве случаев это проблема с правами доступа.
Используя всего одну команду `chown` и две команды `find` для получения информации о владельцах и правах доступа, обновление WordPress можно выполнить без проблем.
Выработка привычки проверять права собственности на файлы перед обновлением может в корне предотвратить повторное возникновение подобных ошибок.
Надеюсь, статья «Решение проблемы с сообщением WORDPRESS: Обновление не может быть продолжено, поскольку некоторые файлы не могут быть скопированы. Эта проблема обычно вызвана несогласованными правами доступа к файлам», опубликованная в блоге Чен Вэйляна ( https://www.chenweiliang.com/ ), окажется вам полезной.
Не стесняйтесь делиться ссылкой на эту статью: https://www.chenweiliang.com/cwl-34583.html
