Cron执行Shell脚本切换目录运行php artisan报错:目录不存在
解决Cron执行脚本切换Laravel目录失败的问题
你脚本里的cd路径写错了,少了用户根目录前缀/home/u341967117,Cron执行时的环境变量和登录shell不一样,没法自动补全这个路径,所以才会提示目录不存在。
直接把切换目录的命令改成完整绝对路径即可:
#!/bin/bash # 用完整绝对路径切换到Laravel项目根目录 cd /home/u341967117/domains/unieschools.com/public_html/ngit # 可添加判断,确保切换目录成功再执行后续命令 if [ $? -eq 0 ]; then echo "当前目录: $PWD" # 执行php artisan命令时建议用php绝对路径,可通过`which php`查询实际路径 /usr/bin/php artisan your-command else echo "切换目录失败" exit 1 fi
额外注意两点:
- Cron的PATH环境变量范围有限,执行php命令最好用绝对路径,你可以在登录shell中执行
which php得到php的完整路径,替换示例中的/usr/bin/php - 确保脚本有可执行权限:执行
chmod +x hello.sh
内容的提问来源于stack exchange,提问作者Monday Bulus
相关产品推荐
相关产品推荐

