通过Code Not Working调用Artisan命令

kyo*_*kyo 13 php laravel laravel-5

描述

在我的Laravel应用程序中,我运行

php artisan languages:export
Run Code Online (Sandbox Code Playgroud)

我有一个csv文件导出成功基于我的languages表.

但目标是利用来自Laravel的Artisan :: call,但当我在我的代码中执行此操作时

$export = Artisan::call('languages:export');
Run Code Online (Sandbox Code Playgroud)

结果

我一直得到变量的0结果$export- 当然没有文件导出.


更新

现在我尝试通过它来调用它 shell_exec() and exec()

$cmd = 'php '.base_path().'/artisan languages:export';
$export = shell_exec($cmd);
Run Code Online (Sandbox Code Playgroud)

我看不出任何一个都没有产生.

从命令行界面,我运行

php/Applications/MAMP/htdocs/code/artisan languages:export

我看到我的csv文件生成了.


如何通过代码进行并调用工匠命令?

Sha*_*una 8

您的控制台命令不会以这种方式返回CSV文件,因为这不是控制台命令的工作方式.你得到的事实0实际上是一个好东西控制台土地(这意味着它完成没有抛出错误).

你的电话是正确的,这是你的期望是错的.无论你消费多少,都需要改变你的方法$export.如果要实际访问新创建的CSV,请查看phpleague/csv包和/或内置fopen命令.如果您只是想知道它已成功完成,那么只需将其0视为成功.


Tos*_*ohn 7

尝试通过调用dd(Artisan::output()); 后 检查输出 $export = Artisan::call('languages:export');


Jer*_*oen 5

您也可以尝试exec()使用php artisan languages:exportas 参数的函数。在这种情况下,您可能需要在命令前面包含正确的路径。

我还找到了函数Artisan::command而不是调用,也许可行?