检测是否从 Laravel 5 中的命令行运行

2022-08-30 12:11:58

我有一个用例,如果应用程序通过Artisan(迁移,种子,route:list)从命令行运行,我们需要修改应用程序流。

在Laravel 4中,这可以像这样完成:

App::runningInConsole()

在Laravel 5中有等价物吗?

在这种情况下,使用环境(.env)变量不是首选,因为这些命令偶尔需要在生产环境中运行(指向生产资源),并且我宁愿避免诉诸重复(.env.commandline)文件。


答案 1

不确定是否有任何以前的版本,但在Laravel 5.2中,您仍然可以这样做,尽管文档中没有提到它。App::runningInConsole()


答案 2

您可以使用 PHP 函数 (http://php.net/manual/en/function.php-sapi-name.php),查明脚本是否从命令启动。php_sapi_name

在你的情况下,你应该检查类似的东西

if (strpos(php_sapi_name(), 'cli') !== false) {
    // Run from command
}

但是,您可能需要检查文档以找到要在每种情况下检查的正确值。(它有时可能会有所不同,但基本上应该总是有一个不同的输出来自通过命令启动的脚本)


推荐