NextCloud – ошибка при загрузке изображения, видео файла

Задача:
---------------------------------------------------------------Исправить ошибку nextcloud при открытии видео или аудио файлов в браузере
Пробуем открыть файл и сразу смотрим, что записалось в логах: “Настройки > Журналирование”

По дате и времени находим, какая запись в логах соответствует попытке открыть файл.
[index] Error: OCP\Files\NotPermittedException: Could not create folder at <<closure>> 0. /usr/local/www/nextcloud/lib/private/Files/AppData/AppData.php line 158 OC\Files\Node\Folder->newFolder("920872") 1. /usr/local/www/nextcloud/lib/private/Preview/Generator.php line 433 OC\Files\AppData\AppData->newFolder("920872") 2. /usr/local/www/nextcloud/lib/private/Preview/Generator.php line 119 OC\Preview\Generator->getPreviewFolder(OC\Files\Node\File {}) 3. /usr/local/www/nextcloud/lib/private/PreviewManager.php line 185 OC\Preview\Generator->getPreview(OC\Files\Node\File {}, 1920, 1080, false, "fill", "image/jpeg") 4. /usr/local/www/nextcloud/core/Controller/PreviewController.php line 172 OC\PreviewManager->getPreview(OC\Files\Node\File {}, 1920, 1080, false, "fill") 5. /usr/local/www/nextcloud/core/Controller/PreviewController.php line 144 OC\Core\Controller\PreviewController->fetchPreview(OC\Files\Node\File {}, 1920, 1080, true, true, "fill") 6. /usr/local/www/nextcloud/lib/private/AppFramework/Http/Dispatcher.php line 170 OC\Core\Controller\PreviewController->getPreviewByFileId(920872, 1920, 1080, true, true, "fill") 7. /usr/local/www/nextcloud/lib/private/AppFramework/Http/Dispatcher.php line 99 OC\AppFramework\Http\Dispatcher->executeController(OC\Core\Controller\PreviewController {}, "getPreviewByFileId") 8. /usr/local/www/nextcloud/lib/private/AppFramework/App.php line 125 OC\AppFramework\Http\Dispatcher->dispatch(OC\Core\Controller\PreviewController {}, "getPreviewByFileId") 9. /usr/local/www/nextcloud/lib/private/AppFramework/Routing/RouteActionHandler.php line 47 OC\AppFramework\App::main("OC\\Core\\Controller\\PreviewController", "getPreviewByFileId", OC\AppFramework\ ... {}, {_route: "core.P ... "}) 10. <<closure>> OC\AppFramework\Routing\RouteActionHandler->__invoke({_route: "core.P ... "}) 11. /usr/local/www/nextcloud/lib/private/Route/Router.php line 299 call_user_func(OC\AppFramework\ ... {}, {_route: "core.P ... "}) 12. /usr/local/www/nextcloud/lib/base.php line 1008 OC\Route\Router->match("/core/preview") 13. /usr/local/www/nextcloud/index.php line 38 OC::handleRequest() GET /core/preview?fileId=920872&x=1920&y=1080&a=true from 192.168.17.231 by admin at 2020-05-23T11:57:51+00:00
Из логов видно, что ошибка прав доступа. Nextcloud не может создать папку.
OCP\Files\NotPermittedException: Could not create folder
Авторизуемся в консоли сервера и проверяем какой веб сервер у нас используется
сurl --insecure --silent --show-error --connect-timeout 1 -I http://localhost | grep Server
Или можно узнать более короткой командой
root@cloud:/ # curl -I http://localhost HTTP/1.1 404 Not Found Server: nginx/1.16.1 Date: Sat, 23 May 2020 11:24:15 GMT Content-Type: text/html Content-Length: 153 Connection: keep-alive root@cloud:/ #
Теперь необходимо узнать пользователя от кого работает nginx
root@cloud:/ # ps aux | grep nginx root 781 0.0 0.1 32268 9500 - Is 28Apr20 0:00.31 nginx: master process /usr/local/sbin/nginx www 4314 0.0 0.1 29476 11756 - S 8May20 18:37.97 nginx: worker process (nginx) root 8480 0.0 0.0 11260 2716 0 S+ 13:33 0:00.00 grep nginx root@cloud:/ #
в какой группе состоит пользователь www
root@cloud:/ # groups www www root@cloud:/ #
После того как мы получили нужную информацию, переходим в веб-директорию nextcloud
root@cloud:/ # cd /usr/local/www/ root@cloud:/usr/local/www #
назвачаем необходимые права на файлы и директории
chown -R www:www nextcloud find nextcloud/ -type d -exec chmod 750 {} \; find nextcloud/ -type f -exec chmod 640 {} \;
может быть, что файлы пользователей лежат в другой директории. Проверяем
root@cloud:/usr/local/www # cat nextcloud/config/config.php | grep datadir 'datadirectory' => '/mnt/da1p1/data', root@cloud:/usr/local/www #
назначаем нужные права на папку
root@cloud:/ # cd /mnt/da1p1 root@cloud:/mnt/da1p1 # chown -R www:www data root@cloud:/mnt/da1p1 # find data/ -type d -exec chmod 750 {} \; root@cloud:/mnt/da1p1 # find data/ -type f -exec chmod 640 {} \;
Пробуем генерировать файлы предварительного просмотра самостоятельно
root@cloud:/usr/local/www/nextcloud # sudo -u www php occ preview:pre-generate The process control (PCNTL) extensions are required in case you want to interrupt long running commands - see http://php.net/manual/en/book.pcntl.php 2020-06-03T22:17:59+00:00 2020-06-03T22:17:59+00:00 In Folder.php line 164: 2020-06-03T22:17:59+00:00 2020-06-03T22:17:59+00:00 Could not create folder 2020-06-03T22:17:59+00:00 2020-06-03T22:17:59+00:00 2020-06-03T22:17:59+00:00 preview:pre-generate 2020-06-03T22:17:59+00:00 root@cloud:/usr/local/www/nextcloud #sudo -u www php occ preview:pre-generate -vvvv The process control (PCNTL) extensions are required in case you want to interrupt long running commands - see http://php.net/manual/en/book.pcntl.php 2020-06-03T22:37:43+00:00 Generating previews for /virzai/files/Автозагрузка/WhatsApp Images/IMG-20200506-WA0019.jpg 2020-06-03T22:37:43+00:00 2020-06-03T22:37:43+00:00 In Folder.php line 164: 2020-06-03T22:37:43+00:00 2020-06-03T22:37:43+00:00 [OCP\Files\NotPermittedException] 2020-06-03T22:37:43+00:00 Could not create folder 2020-06-03T22:37:43+00:00 2020-06-03T22:37:43+00:00 2020-06-03T22:37:43+00:00 Exception trace: 2020-06-03T22:37:43+00:00 at /usr/local/www/nextcloud/lib/private/Files/Node/Folder.php:164 2020-06-03T22:37:43+00:00 OC\Files\Node\Folder->newFolder() at /usr/local/www/nextcloud/lib/private/Files/AppData/AppData.php:158 2020-06-03T22:37:43+00:00 OC\Files\AppData\AppData->newFolder() at /usr/local/www/nextcloud/lib/private/Preview/Generator.php:433 2020-06-03T22:37:43+00:00 OC\Preview\Generator->getPreviewFolder() at /usr/local/www/nextcloud/lib/private/Preview/Generator.php:119 2020-06-03T22:37:43+00:00 OC\Preview\Generator->getPreview() at /usr/local/www/nextcloud/lib/private/PreviewManager.php:185 2020-06-03T22:37:43+00:00 OC\PreviewManager->getPreview() at /usr/local/www/nextcloud/apps/previewgenerator/lib/Command/PreGenerate.php:205 2020-06-03T22:37:43+00:00 OCA\PreviewGenerator\Command\PreGenerate->processFile() at /usr/local/www/nextcloud/apps/previewgenerator/lib/Command/PreGenerate.php:193 2020-06-03T22:37:43+00:00 OCA\PreviewGenerator\Command\PreGenerate->processRow() at /usr/local/www/nextcloud/apps/previewgenerator/lib/Command/PreGenerate.php:164 2020-06-03T22:37:43+00:00 OCA\PreviewGenerator\Command\PreGenerate->startProcessing() at /usr/local/www/nextcloud/apps/previewgenerator/lib/Command/PreGenerate.php:132 2020-06-03T22:37:43+00:00 OCA\PreviewGenerator\Command\PreGenerate->execute() at /usr/local/www/nextcloud/3rdparty/symfony/console/Command/Command.php:255 2020-06-03T22:37:43+00:00 Symfony\Component\Console\Command\Command->run() at /usr/local/www/nextcloud/3rdparty/symfony/console/Application.php:915 2020-06-03T22:37:43+00:00 Symfony\Component\Console\Application->doRunCommand() at /usr/local/www/nextcloud/3rdparty/symfony/console/Application.php:272 2020-06-03T22:37:43+00:00 Symfony\Component\Console\Application->doRun() at /usr/local/www/nextcloud/3rdparty/symfony/console/Application.php:148 2020-06-03T22:37:43+00:00 Symfony\Component\Console\Application->run() at /usr/local/www/nextcloud/lib/private/Console/Application.php:214 2020-06-03T22:37:43+00:00 OC\Console\Application->run() at /usr/local/www/nextcloud/console.php:99 2020-06-03T22:37:43+00:00 require_once() at /usr/local/www/nextcloud/occ:11 2020-06-03T22:37:43+00:00 2020-06-03T22:37:43+00:00 preview:pre-generate 2020-06-03T22:37:43+00:00 root@cloud:/usr/local/www/nextcloud #

Удаляем папку data/appdata_*
rm -r /mnt/da1p1/data/appdata_*
Пробуем пересканировать файлы приложений
root@cloud:/usr/local/www/nextcloud # sudo -u www php occ files:scan-app-data The process control (PCNTL) extensions are required in case you want to interrupt long running commands - see http://php.net/manual/en/book.pcntl.php Scanning AppData for files Path not found: /appdata_ocf5begso4j5 +---------+-------+--------------+ | Folders | Files | Elapsed time | +---------+-------+--------------+ | 0 | 0 | 00:00:00 | +---------+-------+--------------+
Запускаем режим восстановления и ещё раз сканирование файлов приложений
root@cloud:/usr/local/www/nextcloud # sudo -u www php occ maintenance:repair The process control (PCNTL) extensions are required in case you want to interrupt long running commands - see http://php.net/manual/en/book.pcntl.php - Repair MySQL collation - All tables already have the correct collation -> nothing to do - Repair mime types - Clean tags and favorites - 0 tags of deleted users have been removed. - 0 tags for delete files have been removed. - 0 tag entries for deleted tags have been removed. - 0 tags with no entries have been removed. - Repair invalid shares - Move .step file of updater to backup location - Fix potential broken mount points - No mounts updated - Add log rotate job - Clear frontend caches - Image cache cleared - SCSS cache cleared - JS cache cleared - Clear every generated avatar on major updates - Add preview background cleanup job - Queue a one-time job to cleanup old backups of the updater - Cleanup invalid photocache files for carddav - Add background job to cleanup login flow v2 tokens - Remove potentially over exposing share links - No need to remove link shares. - Clear access cache of projects - Switches from deprecated "production" to "stable" update channel - Sets the enterprise logo - Repair step already executed - Reset generated avatar flag - Update name of the stored view - Fix component of birthday calendars - 4 birthday calendars updated. - Regenerating birthday calendars to use new icons and fix old birthday events without year - Repair step already executed - Fix broken values of calendar objects 0 [>---------------------------] - Registering building of calendar search index as background job - Repair step already executed - Registering background jobs to update cache for webcal calendars - Added 0 background jobs to update webcal calendars - Registering building of calendar reminder index as background job - Repair step already executed - Clean up orphan event and contact data - 0 events without a calendar have been cleaned up - 0 properties without an events have been cleaned up - 0 changes without a calendar have been cleaned up - 0 cached events without a calendar subscription have been cleaned up - 0 changes without a calendar subscription have been cleaned up - 0 contacts without an addressbook have been cleaned up - 0 properties without a contact have been cleaned up - 0 changes without an addressbook have been cleaned up - Remove activity entries of private events - Removed 0 activity entries - Delete orphaned ACL rules - Copy default images to the app data directory - Icon %s copied successfully - Icon %s copied successfully - Icon %s copied successfully - Fix the share type of guest shares when migrating from ownCloud - Copy the share password into the dedicated column - Set existing shares as accepted - Purify and migrate collected mail addresses 0 [>---------------------------] - Insert sync background job for all accounts 1/1 [============================] 100% - Make Mail itinerary extractor executable - Migrate Mail provisioning config from config.php to the database - No old config found - Create or update provisioned Mail accounts - No Mail provisioning config set - Remove any playlist files mistakenly added to music_tracks table - Combine multi-disk albums and store disk numbers per track - Set creation date for playlists without one - Migrate binary status into separate boolean fields - Update OAuth token expiration times - Repair Passwords Database Objects - Checking 0 tag revisions 0 [>---------------------------] - Fixed 0 tag revisions - Checking 2 folder revisions 2/2 [============================] 100% - Fixed 0 folder revisions - Checking 38 password revisions 38/38 [============================] 100% - Fixed 0 password revisions - Checking 0 tag models 0 [>---------------------------] - Fixed 0 tag models - Checking 1 folder models 1/1 [============================] 100% - Fixed 0 folder models - Checking 21 password models 21/21 [============================] 100% - Fixed 0 password models - Checking 0 password tag relations 0 [>---------------------------] - Fixed 0 password tag relations - Create help command - Invalidate access cache for projects conversation provider - Invalidation not required - Add background job to check for backup codes - Populating added database structures for workflows root@cloud:/usr/local/www/nextcloud # sudo -u www php occ files:scan-app-data The process control (PCNTL) extensions are required in case you want to interrupt long running commands - see http://php.net/manual/en/book.pcntl.php Scanning AppData for files +---------+-------+--------------+ | Folders | Files | Elapsed time | +---------+-------+--------------+ | 6 | 3 | 00:00:00 | +---------+-------+--------------+
Запускаем создание изображений
root@cloud:/usr/local/www/nextcloud # sudo -u www php occ preview:pre-generate -vvvv The process control (PCNTL) extensions are required in case you want to interrupt long running commands - see http://php.net/manual/en/book.pcntl.php 2020-06-03T22:48:37+00:00 Generating previews for /virzai/files/Автозагрузка/WhatsApp Images/IMG-20200427-WA0003.jpg 2020-06-03T22:48:39+00:00 Generating previews for /virzai/files/Автозагрузка/WhatsApp Images/IMG-20200503-WA0008.jpg 2020-06-03T22:48:40+00:00 Generating previews for /virzai/files/Автозагрузка/WhatsApp Images/IMG-20200427-WA0020.jpg 2020-06-03T22:48:43+00:00 Generating previews for /virzai/files/Автозагрузка/WhatsApp Images/IMG-20200414-WA0041.jpg
После этого всё работало!
1 комментарий
[…] При просмотре логов и поиске возникновения ошибки я пришёл к решению, которое описывал в статье: “NextCloud – ошибка при загрузке изображения, видео файла“ […]