Каталог артыкулаў
Пры падтрымцы сайта WordPress у асяроддзі HestiaCP вы можаце сутыкнуцца з паведамленнем пра памылку «Абнаўленне не можа быць выканана, бо некаторыя файлы не могуць быць скапіяваныя».
Гэтае папярэджанне можа выглядаць трывожным, але на самой справе гэта адна з найбольш распаўсюджаных праблем, звязаных з дазволамі WordPress.
Звычайна гэта адбываецца падчас аўтаматычнага абнаўлення плагінаў, тэм або ядра WordPress.
На першы погляд, гэта проста «няўдалае абнаўленне», але першапрычына амаль заўсёды паказвае на адно і тое ж: неадпаведныя правы доступу да файлаў.
Добрая навіна заключаецца ў тым, што як толькі вы зразумееце мадэль карыстальніка HestiaCP, вы зможаце цалкам вырашыць праблему з дапамогай усяго некалькіх каманд.
Першапрычына праблемы: чаму ўзнікае неадпаведнасць дазволаў?
У асяроддзі HestiaCP кожны вэб-сайт (Vhost) працуе пад асобным сістэмным карыстальнікам.
Тым часам працэсы вэб-сэрвісаў (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
