环境:Ubuntu22.04 + Nginx1.22.1 + PHP 8.0 + Nextcloud Hub 6 (27.1.3) + 宝塔面板
最近在vps上部署了Aria2下载了一些动漫到nextcloud的目录下,但是在nextcloud的网页端却找不到这些文件。经过搜索得知,Nextcloud的文件列表并不是实时读取,而是通过数据库来维护的,而数据库并不能实时更新,这时候就需要我们手动去更新文件列表。
Google上查到了如下Shell命令:
sudo -u www-data php occ files:scan –all
然而在我的环境下的运行结果是这样的:
这里提示了PHP版本的错误(其实如果用宝塔+LNMP部署Nextcloud,需要修正的还不止这个,后表)。于是我将情况丢给了ChatGPT,得到了如下回答:
但是事实上,
which php8.0
这条语句并没有任何输出。于是通过宝塔的软件商店手动找到PHP8.0的安装路径
/www/server/php/80
旋即又更改了指令
sudo -u www-data /www/server/php/80/bin/php /storage512/cloud/occ files:scan --all
事情并没有想象中那么简单,我的Shell再度报错如下:
这里并非简单的目录权限问题,因为我的Nextcloud文件夹权限早已设为775,config也非只读。经过调查得知,Nginx的Web用户为www
而非www-data
最终,这条命令完美解决了问题:
sudo -u www /www/server/php/80/bin/php /storage512/cloud/occ files:scan --all
之后在宝塔面板中将这条命令加入计划任务,每半小时执行一次,终于可以高枕无忧了。