Laravel Artisan 命令行:检测是否在命令行执行? 0 个改进

有时候,我们需要判断是否是在命令行环境中执行,可以使用:

if (app()->runningInConsole()) {
    // 运行在命令行下
}

当然,在 PHP 中,你永远可以使用 PHP 原生的方法来检测:

if (strpos(php_sapi_name(), 'cli') !== false) {
    // 运行在命令行下
}
本文为 Wiki 文章,邀您参与纠错、纰漏和优化
讨论数量: 10
wanghan

这是干啥用的?

5年前 评论

@wanghan 判断是不是在 命令行 下运行的

5年前 评论

难道php_sapi_name()还会输出其他的,我测试都是输出 cli

5年前 评论
Summer

@lovecn 当然咯,例如 fpm 里就是 "fpm-fcgi"

5年前 评论

@puzzle9 还是没理解,能不能举个例子

5年前 评论

@hehorange 举个栗子, https://github.com/Hanson/vbot/blob/7cbe5c...

vbot 只允许用户在 terminal 中运行

5年前 评论

例如:laravel定时任务

5年前 评论

既然是 wiki,建议加上参考链接一栏。

5年前 评论

@hehorange 这个一般是写在bootstrap/app.php 这个里边
你把这个写在 这里边 然后在命令随便打个命令 你就知道了
如果是在命令行 if里边随便输出一个字符

5年前 评论
if (PHP_SAPI == 'cli') {
   // console
}else{
  // other..
}
5年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!