Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/templates/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 通过不工作的代码调用Artisan命令 描述_Php_Laravel_Laravel 5 - Fatal编程技术网

Php 通过不工作的代码调用Artisan命令 描述

Php 通过不工作的代码调用Artisan命令 描述,php,laravel,laravel-5,Php,Laravel,Laravel 5,在我的Laravel应用程序中,我运行 php artisan languages:export 基于我的语言表,我成功导出了一个csv文件 但目标是利用Laravel的这一点,但当我在代码中这样做时 $export = Artisan::call('languages:export'); 结果 由于$export变量,我一直得到0——当然没有导出文件 更新 现在我尝试通过shell\u exec()和exec()调用它 我看不到任何一个上生成任何内容 从命令行界面,我运行 php/Ap

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

php artisan languages:export
基于我的
语言
表,我成功导出了一个
csv
文件

但目标是利用Laravel的这一点,但当我在代码中这样做时

$export = Artisan::call('languages:export');

结果 由于
$export
变量,我一直得到
0
——当然没有导出文件


更新 现在我尝试通过
shell\u exec()和exec()调用它

我看不到任何一个上生成任何内容

从命令行界面,我运行

php/Applications/MAMP/htdocs/code/artisan语言:导出

我看到我的csv文件生成了


如何通过代码调用artisan命令?

您也可以使用
php artisan语言:export
作为参数来尝试该函数。在这种情况下,您可能需要在命令前面包含正确的路径


我还找到了函数而不是调用,也许这样行吗?

尝试通过调用来检查输出
dd(Artisan::output())
之后

$export=Artisan::call('languages:export')

您的console命令不会以这种方式返回CSV文件,因为console命令不是这样工作的。您得到
0
这一事实实际上是一件好事(这意味着它在没有抛出错误的情况下完成)

你的电话是对的,是你的期望错了。您需要改变您的方法,无论您是如何使用
$export
。如果要实际访问新创建的CSV,请查看
phpleague/CSV
包和/或内置的
fopen
命令。如果您只是想知道它是否成功完成,那么就将该
0
视为成功。

Artisan:call()支持$outputBuffer参数,是否尝试

$parameters = [];
$outputBuffer = null;
Artisan::call('languages:export', $parameters, $outputBuffer);

我可以试试,但实际的目标是让它与Laravel
Artisan::call一起工作。
…看到我的更新,我试过了,但它似乎没有调用它。好的。我可以试试。Artisan::output()以cli的形式提供精确的输出,你救了我一天!!!感谢API文档,
Artisan::call
的结果是一个int。我怀疑这是一个退出代码,零表示成功完成。@ceejayoz:感谢您的详细阐述和纠正我的想法。我仍然很好奇,为什么只有通过命令行运行Artisan命令,它才能工作,但是不在代码内部。
Artisan::call
php-Artisan
在幕后是不同的。它们做相似的事情,但打算以不同的方式使用,相应地,行为也不同。@i通过应用程序运行
Artisan::call
命令的用户是否有权创建和写入该csv文件位置?听起来像是权限问题。您是否尝试创建自定义artisan命令创建单个文件来测试此功能?感谢您纠正我的想法和期望。但我还有一个疑问。为什么我需要查看phpleague/csv?我的代码已经做到了。我已经知道怎么做了。当我在CLI上运行这个php artisan languages:export时,它可以工作,只有当我从代码运行它时,它才不工作。它与我导出文件的方式无关。我之所以提到它,是因为它是读取和写入CSV文件的好工具。
$parameters = [];
$outputBuffer = null;
Artisan::call('languages:export', $parameters, $outputBuffer);