Подтвердить что ты не робот

Вызов команд Artisan с помощью кода NOT Working

Описание

В моем приложении Laravel я запускаю

php artisan languages:export

Я получил файл csv, который успешно экспортирует базу в моей таблице languages.

НО цель состоит в том, чтобы использовать этот Artisan:: call от Laravel, но когда я сделал это в своем коде

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

Результат

Я продолжал получать 0 в качестве результата $export переменной - файл не экспортировался, конечно.


Update

Теперь я пытаюсь вызвать его через shell_exec() and exec()

$cmd = 'php '.base_path().'/artisan languages:export';
$export = shell_exec($cmd);

Я ничего не вижу на одном из них.

В интерфейсе командной строки я запускаю

php/Applications/MAMP/htdocs/язык кода/ремесленника: экспорт

Я видел, как сгенерирован файл csv.


Как идти и вызывать команды мастеров через код?

4b9b3361

Ответ 1

Ваша консольная команда не собирается возвращать CSV файл таким образом, потому что это не то, как работают консольные команды. Тот факт, что вы получаете 0, на самом деле является хорошей вещью для консоли (это означает, что она завершена без ошибок бросания).

Ваш звонок правильный, это ваше ожидание, что это неправильно. Вам нужно будет изменить свой подход, но вы потребляете $export. Если вы хотите получить доступ к вновь созданному CSV, посмотрите на пакет phpleague/csv и/или встроенную команду fopen. Если вы просто хотите знать, что он успешно завершен, просто используйте 0 как успех.

Ответ 2

Попробуйте проверить вывод по вызову dd(Artisan::output()); после $export = Artisan::call('languages:export');

Ответ 3

Вы также можете попробовать exec() с параметром php artisan languages:export в качестве параметра. В этом случае вам может потребоваться включить правильный путь перед командой.

Я также нашел функцию Artisan::command вместо вызова, возможно, это работает?