Пользователь Jailkit не может выполнять команды Nextcloud OCC

У меня есть новая установка nextcloud 22.2.0, которую я установил в соответствии с [ ] этими инструкциями:1

После установки NC в моем журнале NC нет ошибок. Тем не менее, в разделе «Обзор» у меня есть некоторые основные износы, которые, как я знаю, являются «ложными срабатываниями» после новой установки. Там я хочу запустить NC occ, чтобы починить вещи:

./occ integrity:check-core

Однако я получаю следующие ошибки:

      Your data directory is invalid
Ensure there is a file called ".ocdata" in the root of the data directory.

Cannot create "data" directory
This can usually be fixed by giving the webserver write access to the root directory. See https://docs.nextcloud.com/server/22/go.php?to=admin-dir_permissions

Setting locale to en_US.UTF-8/fr_FR.UTF-8/es_ES.UTF-8/de_DE.UTF-8/ru_RU.UTF-8/pt_BR.UTF-8/it_IT.UTF-8/ja_JP.UTF-8/zh_CN.UTF-8 failed
Please install one of these locales on your system and restart your webserver.

An unhandled exception has been thrown:
Exception: Environment not properly prepared. in /web/lib/private/Console/Application.php:162
Stack trace:
#0 /web/console.php(98): OC\Console\Application->loadCommands(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
#1 /web/occ(11): require_once('/web/console.ph...')
#2 {main}

Я смог решить эту ошибку:

      Setting locale to en_US.UTF-8/fr_FR.UTF-8/es_ES.UTF-8/de_DE.UTF-8/ru_RU.UTF-8/pt_BR.UTF-8/it_IT.UTF-8/ja_JP.UTF-8/zh_CN.UTF-8 failed
    Please install one of these locales on your system and restart your webserver.

Используя:

      chattr -i /var/www/clients/client1/web19/
jk_cp -j /var/www/clients/client1/web19/ /usr/lib/locale
chattr +i /var/www/clients/client1/web19/

Кто-нибудь может подсказать, как устранить две оставшиеся ошибки, чтобы NC occ работал корректно?

Благодарность

Также права пользователя верны:

      # ls -la /var/www/clients/client1/web19 
total 60
drwxr-xr-x 15 root  root    4096 Nov 12 15:12 .
drwxr-xr-x  9 root  root    4096 Nov 12 14:50 ..
lrwxrwxrwx  1 root  root       7 Nov 12 15:09 bin -> usr/bin
drwxr-xr-x  2 web19 client1 4096 Nov 12 14:50 cgi-bin
drwxr-xr-x  2 root  root    4096 Nov 12 17:36 dev
drwxr-xr-x  8 root  root    4096 Nov 12 15:12 etc
drwxr-xr-x  4 root  root    4096 Nov 12 15:12 home
lrwxrwxrwx  1 root  root       7 Nov 12 15:09 lib -> usr/lib
lrwxrwxrwx  1 root  root       9 Nov 12 15:09 lib64 -> usr/lib64
drwxr-xr-x  2 root  root    4096 Nov 12 19:58 log
drwx--x---  2 web19 client1 4096 Nov 12 20:05 private
drwx------  2 web19 client1 4096 Nov 12 15:09 .ssh
drwxr-xr-x  2 root  root    4096 Nov 12 14:55 ssl
drwxrwx---  2 web19 client1 4096 Nov 12 20:09 tmp
drwxr-xr-x  8 root  root    4096 Nov 12 15:09 usr
drwxr-xr-x  4 root  root    4096 Nov 12 15:12 var
drwx--x--x 14 web19 client1 4096 Nov 12 20:09 web
drwx--x---  2 web19 client1 4096 Nov 12 14:50 webdav

1 ответ

У меня была та же проблема, что и у вас, и, что любопытно, я использую того же пользователя/клиента для той же службы. Я решил следующим образом (в дополнение к вашему решению о «локали»).

Зайти в корень джейла( /var/www/clients/client1/web19). Здесь создайте каталоги для содержимого PHP:

      mkdir -p etc/php/7.4/cli/conf.d

Скопируйте общесистемный php.ini для cli в джейл:

      cp -a /etc/php/7.4/cli/php.ini etc/php/7.4/cli/php.ini

"Вряд ли" связать каждый файл *.so, присутствующий в общесистемной конфиге, в джейл. Например:

      ln /etc/php/7.4/mods-available/apcu.ini 20-apcu.ini

Если у вас тоже проблемы с кешем (как у меня), вы можете добавить определение перед запуском occ. Я использую следующую команду:

      runuser -l web19 -c "cd /web; php --define apc.enable_cli=1 ./occ"

...и вроде все работает! :-)

Другие вопросы по тегам