Вызов команд 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.
Как идти и вызывать команды мастеров через код?
Ответы
Ответ 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
вместо вызова, возможно, это работает?