PHP Предупреждение: chmod(): Операция не разрешена в class-wp-filesystem-direct.php на строке 173

3 нояб. 2020 г., 20:54:58
Просмотры: 22.8K
Голосов: 4

Я запускаю экземпляр WordPress на моем веб-сервере, но получаю следующую ошибку в логах

PHP Warning:  chmod(): Operation not permitted in 
/home/webserver/html/wp-admin/includes/class-wp-filesystem-direct.php on line 173, 
referer: http:// mysite.com/

Я проверил файл class-wp-filesystem-direct.php на строке 173

вот эта строка:

if ( ! $recursive || ! $this->is_dir( $file ) ) {
                        return chmod( $file, $mode );
}

Вот текущие права доступа этого файла:

-rwxrwxr-x 1 root apache 17K Oct 20 20:24 /home/webserver/html/wp-admin/includes/class-wp-filesystem-direct.php

Кто-нибудь знает, что не так с моим экземпляром WordPress?

Буду очень признателен за вашу помощь.

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

Это не касается прав доступа к файлам, а скорее прав собственности. Например, если у меня есть файл с правами 777, принадлежащий пользователю root и группе root, то пользователь apache не сможет изменить его права

Tom J Nowell Tom J Nowell
3 нояб. 2020 г. 21:24:56

@TomJNowell, но вопрос в том, для какого файла мне нужно изменить права? или изменить владельца?

user2924482 user2924482
3 нояб. 2020 г. 21:58:54

Я не думаю, что можно определить это только по предоставленной вами информации. Что вы пытались сделать, когда это произошло? Обновление WP?

Tom J Nowell Tom J Nowell
4 нояб. 2020 г. 01:56:49

может подтвердить это при попытке обновить WordPress через панель управления

clockw0rk clockw0rk
21 июл. 2021 г. 04:26:38

Моим решением была загрузка всей папки wp-includes из версии 5.7 снова. Мне повезло, что я пишу плагины и обычно не забочусь о ядре локально, поэтому после неудачного обновления я мог просто заново загрузить ядро 5.7, и оно снова заработало

clockw0rk clockw0rk
21 июл. 2021 г. 04:34:20

@clockw0rk Не могли бы вы подробнее объяснить ваше решение? У меня сейчас такая же проблема.

Cantor Cantor
4 мая 2022 г. 13:01:27

У меня была рабочая версия WordPress, лежащая на жестком диске. Единственное, что я когда-либо загружал/коммитил, был мой плагин. Поэтому, когда обновление провалилось, я мог просто загрузить всю папку wp-includes и перезаписать её на сервере — своего рода "жесткое понижение версии".

clockw0rk clockw0rk
5 мая 2022 г. 19:04:08

Для справки: я смог избавиться от ошибки, просто установив chmod -R 777 для папок admin и include, затем обновив через админку, а затем снова установив chmod -R 750 для этих папок, чтобы запретить скриптам права на запись. Если вам все равно, можно просто оставить им 777 на постоянной основе.

clockw0rk clockw0rk
5 мая 2022 г. 19:04:26
Показать остальные 3 комментариев
Все ответы на вопрос 3
4

В моем случае это были файлы в папке /wp-content/uploads/bb-plugin/cache/.

17 дек. 2020 г. 08:55:46
Комментарии

Ты имеешь в виду, что там были файлы с неправильными правами? Почему WordPress пытался изменить chmod для них?

Rup Rup
17 дек. 2020 г. 10:22:02

@Rup bb-plugin пытался получить доступ к этим файлам через API файлов WordPress. Не помню, пытался ли плагин создать новые файлы или изменить существующие.

Aleksandr Levashov Aleksandr Levashov
18 дек. 2020 г. 16:43:08

Хм, я проверил ls -l для каждого файла в uploads, но не могу найти файл, который вызывает ошибку. Я разрабатываю локально с XAMPP на macbook. Но внезапно я не могу обновлять плагины.

alex alex
10 янв. 2022 г. 23:30:18

та же проблема у меня, Beaver Builder

Sam Holguin Sam Holguin
14 июн. 2023 г. 13:39:56
0

Вам необходимо изменить владельца с "root" на "www-data". www-data — это веб-пользователь для apache2.

sudo chown www-data /var/www/html/[папка_вашего_сайта]/wp-admin/includes/class-wp-filesystem-direct.php

Или лучше изменить владельца для всех файлов в папке wp-admin рекурсивно:

sudo chown www-data /var/www/html/[папка_вашего_сайта]/wp-admin/ -R
7 сент. 2022 г. 08:57:19
0

Вам необходимо проверить пользователя, от имени которого работает ваш веб-сервер, а также владельца и группу файлов внутри папки wp-content.

Если пользователь веб-сервера не совпадает с владельцем файлов или не входит в ту же группу, то эта ошибка возникает потому, что скрипт при попытке регенерации различных размеров исходного изображения не имеет разрешения на замену файлов и поэтому выдает указанную ошибку.

21 февр. 2023 г. 03:38:54