图床时不时有些违规图片,删除后发现外部存储服务器上的图片没有被删除,在论坛里询问后发现是没有配置Cron的原因。就做个笔记,看看有没有人需要。
注意我的运行环境为Debian11,宝塔面板,Chevereto 3.20.17
获取表达式
打开你的Chevereto仪表盘主页往下拉,找到你的cli.php文件位置(单击图片放大)
将路径复制出来加上参数-C cron
,在Shell中跑一下试试。
运行代码(apt install -y sudo
):
sudo -u www php /www/wwwroot/img001.org/cli.php -C cron
如果出现和下面相似的结果,表明该命令没有任何问题。
root@VM:~# sudo -u www php /www/wwwroot/img001.org/cli.php -C cron
* Processing checkHtaccess
* Enforce .htaccess files
✅ [DONE] Enforce completed (everything OK)
* Processing cleanUnconfirmedUsers
* Processing storageDelete
* Processing removeDeleteLog
* Processing deleteExpiredImages
* Processing tryForUpdates
--
为了防止出现PHP版本错误,我在这里加上了PHP的绝对路径,我习惯用PHP7.4,所以我的Cron表达式应该是:
* * * * * sudo -u www /www/server/php/74/bin/php /www/wwwroot/img001.org/cli.php -C cron >/dev/null 2>&1
如果你是V4版本请输入如下信息:
* * * * * sudo -u www /www/server/php/80/bin/php /www/wwwroot/www.dogtu.cn/app/bin/legacy -C cron >/dev/null 2>&1
添加Cron任务
得到上面的 Cron 表达式后,运行crontab -e
,将此代码添加到您的服务器 cron 任务中。
你现在可以尝试删除一张图片,喝杯水等待一下以后,查看远程存储服务器上的图片是否被删除。
已知问题解决
宝塔面板开启防提权后www用户被禁止使用Shell。
错误如下:
root@VM:~# sudo -u www php /www/wwwroot/img001.org/cli.php -C cron
Your request has been recorded. Tips from BT security !!!
将/www/server/php/74/bin/php
加入宝塔防入侵插件白名单中,注意修改你的版本号,我用的PHP7.4所以是74,V4版本一般是用80。
又或者直接使用root权限运行(危险操作,一般不要这么操作) :
/www/server/php/74/bin/php /www/wwwroot/img001.org/cli.php -C cron
官方文档:
V3:https://v3-docs.chevereto.com/setup/system/requirements.html#cron
V4:https://v4-docs.chevereto.com/application/stack/cron.html
很好,谢谢