Ubuntu环境下Crontab执行PHP调用Flutter命令报错求助
问题解决办法
报错翻译
原报错:bash: flutter: No such file or directory → 中文翻译:bash:flutter:找不到该文件或目录
问题原因
Crontab执行任务时的环境变量PATH和终端登录时的PATH不同,终端能识别flutter命令是因为它的安装路径在终端的PATH列表里,但crontab的PATH没包含这个路径,所以找不到flutter命令。而ls是系统默认命令,路径在crontab的PATH范围内,因此能正常执行。
解决方法
方法1:使用flutter的完整路径执行命令
- 在终端执行
which flutter,获取flutter的绝对路径,比如输出可能是/home/你的用户名/flutter/bin/flutter - 修改
create.php中的代码,把flutter替换为刚才得到的完整路径:
<?php $output = shell_exec('bash /home/你的用户名/flutter/bin/flutter create test'); echo "<pre>$output</pre>"; ?>
方法2:在Crontab中配置PATH环境变量
- 在终端执行
echo $PATH,复制输出内容,再追加flutter的安装目录(比如/home/你的用户名/flutter/bin) - 编辑crontab配置(执行
crontab -e),在任务前添加PATH设置:
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/home/你的用户名/flutter/bin * * * * * cd /var/www/hamrah.com && php /var/www/hamrah.com/create.php
额外注意事项
- 确保执行crontab任务的用户(比如root或你日常登录的用户)拥有访问flutter目录的权限,以及在
/var/www/hamrah.com下创建文件的权限 - 如果是使用Nginx对应的用户(如www-data)的crontab,要确认该用户能访问flutter的安装路径,必要时可给flutter目录添加对应权限
内容的提问来源于stack exchange,提问作者NirWeb
相关产品推荐
相关产品推荐

