Artisan::call('migrate') 在将 Laravel 升级到 4.2 后不起作用
声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow
原文地址: http://stackoverflow.com/questions/24223286/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me):
StackOverFlow
Artisan::call('migrate') not working after upgrading Laravel to 4.2
提问by mpet
I'm using Artisan::call('migrate');in a Laravel controller method and it working while Laravel version was 4.1. After updating Laravel using composer updatecommand (and setting "laravel/framework": "4.2.*"in composer.js) this controller method (as this is the only command in it) doesn't work anymore.
我正在使用 Artisan::call('migrate'); 在 Laravel 控制器方法中,它在 Laravel 版本为 4.1 时工作。使用composer update命令(并在composer.js 中设置 "laravel/framework": "4.2.*")更新 Laravel 后,此控制器方法(因为这是其中唯一的命令)不再起作用。
I've even added 'cipher' => MCRYPT_RIJNDAEL_256in /app/config/app.php as stated in http://laravel.com/docs/upgrade#upgrade-4.2
我什至在 /app/config/app.php 中添加了'cipher' => MCRYPT_RIJNDAEL_256,如 http://laravel.com/docs/upgrade#upgrade-4.2 所述
That already happens: http://laravel.io/forum/06-02-2014-not-able-run-artisan-commands
这已经发生了:http: //laravel.io/forum/06-02-2014-not-able-run-artisan-commands
When I put Artisan::call('migrate') into try/catch block controller looks like this:
当我将 Artisan::call('migrate') 放入 try/catch 块控制器时,如下所示:
public function ArtMigr(){
try {
Artisan::call('migrate');
} catch (Exception $e) {
echo $e;
}
}
And I'm getting the following error:
我收到以下错误:
exception 'ErrorException' with message 'Use of undefined constant STDIN - assumed 'STDIN'' in D:\htdocs\artisan_error\vendor\symfony\console\Symfony\Component\Console\Helper\QuestionHelper.php:112 Stack trace: #0 D:\htdocs\artisan_error\vendor\symfony\console\Symfony\Component\Console\Helper\QuestionHelper.php(112): Illuminate\Exception\Handler->handleError(8, 'Use of undefine...', 'D:\htdocs\artis...', 112, Array) #1 D:\htdocs\artisan_error\vendor\symfony\console\Symfony\Component\Console\Helper\QuestionHelper.php(49): Symfony\Component\Console\Helper\QuestionHelper->doAsk(Object(Symfony\Component\Console\Output\NullOutput), Object(Symfony\Component\Console\Question\ConfirmationQuestion)) #2 D:\htdocs\artisan_error\vendor\laravel\framework\src\Illuminate\Console\Command.php(186): Symfony\Component\Console\Helper\QuestionHelper->ask(Object(Symfony\Component\Console\Input\ArrayInput), Object(Symfony\Component\Console\Output\NullOutput), Object(Symfony\Component\Console\Question\ConfirmationQuestion)) #3 D:\htdocs\artisan_error\vendor\laravel\framework\src\Illuminate\Console\ConfirmableTrait.php(21): Illuminate\Console\Command->confirm('Do you really w...') #4 D:\htdocs\artisan_error\vendor\laravel\framework\src\Illuminate\Database\Console\Migrations\MigrateCommand.php(59): Illuminate\Database\Console\Migrations\MigrateCommand->confirmToProceed()
5 D:\htdocs\artisan_error\vendor\laravel\framework\src\Illuminate\Console\Command.php(112):
Illuminate\Database\Console\Migrations\MigrateCommand->fire() #6 D:\htdocs\artisan_error\vendor\symfony\console\Symfony\Component\Console\Command\Command.php(252): Illuminate\Console\Command->execute(Object(Symfony\Component\Console\Input\ArrayInput), Object(Symfony\Component\Console\Output\NullOutput)) #7 D:\htdocs\artisan_error\vendor\laravel\framework\src\Illuminate\Console\Command.php(100): Symfony\Component\Console\Command\Command->run(Object(Symfony\Component\Console\Input\ArrayInput), Object(Symfony\Component\Console\Output\NullOutput)) #8 D:\htdocs\artisan_error\vendor\laravel\framework\src\Illuminate\Console\Application.php(96): Illuminate\Console\Command->run(Object(Symfony\Component\Console\Input\ArrayInput), Object(Symfony\Component\Console\Output\NullOutput)) #9 [internal function]: Illuminate\Console\Application->call('migrate') #10 D:\htdocs\artisan_error\vendor\laravel\framework\src\Illuminate\Foundation\Artisan.php(57): call_user_func_array(Array, Array) #11 D:\htdocs\artisan_error\vendor\laravel\framework\src\Illuminate\Support\Facades\Facade.php(208): Illuminate\Foundation\Artisan->__call('call', Array) #12 D:\htdocs\artisan_error\vendor\laravel\framework\src\Illuminate\Support\Facades\Facade.php(208): Illuminate\Foundation\Artisan->call('migrate') #13 D:\htdocs\artisan_error\app\controllers\HomeController.php(160): Illuminate\Support\Facades\Facade::__callStatic('call', Array) #14 D:\htdocs\artisan_error\app\controllers\HomeController.php(160): Illuminate\Support\Facades\Artisan::call('migrate') #15 D:\htdocs\artisan_error\app\controllers\HomeController.php(145): HomeController->InstallDatabaseStructure() #16 D:\htdocs\artisan_error\app\controllers\HomeController.php(127): HomeController->WriteDatabaseCredentials('localhost', 'laravel-aplikac...', 'root', '') #17 [internal function]: HomeController->postTestDatabaseConnection() #18 D:\htdocs\artisan_error\vendor\laravel\framework\src\Illuminate\Routing\Controller.php(231): call_user_func_array(Array, Array) #19 D:\htdocs\artisan_error\vendor\laravel\framework\src\Illuminate\Routing\ControllerDispatcher.php(93): Illuminate\Routing\Controller->callAction('postTestDatabas...', Array)
20 D:\htdocs\artisan_error\vendor\laravel\framework\src\Illuminate\Routing\ControllerDispatcher.php(62):
Illuminate\Routing\ControllerDispatcher->call(Object(HomeController), Object(Illuminate\Routing\Route), 'postTestDatabas...') #21 D:\htdocs\artisan_error\vendor\laravel\framework\src\Illuminate\Routing\Router.php(930): Illuminate\Routing\ControllerDispatcher->dispatch(Object(Illuminate\Routing\Route), Object(Illuminate\Http\Request), 'HomeController', 'postTestDatabas...') #22 [internal function]: Illuminate\Routing\Router->Illuminate\Routing{closure}() #23 D:\htdocs\artisan_error\vendor\laravel\framework\src\Illuminate\Routing\Route.php(105): call_user_func_array(Object(Closure), Array) #24 D:\htdocs\artisan_error\vendor\laravel\framework\src\Illuminate\Routing\Router.php(996): Illuminate\Routing\Route->run(Object(Illuminate\Http\Request)) #25 D:\htdocs\artisan_error\vendor\laravel\framework\src\Illuminate\Routing\Router.php(964): Illuminate\Routing\Router->dispatchToRoute(Object(Illuminate\Http\Request))
26 D:\htdocs\artisan_error\vendor\laravel\framework\src\Illuminate\Foundation\Application.php(738):
Illuminate\Routing\Router->dispatch(Object(Illuminate\Http\Request))
27 D:\htdocs\artisan_error\vendor\laravel\framework\src\Illuminate\Foundation\Application.php(708):
Illuminate\Foundation\Application->dispatch(Object(Illuminate\Http\Request))
28 D:\htdocs\artisan_error\vendor\laravel\framework\src\Illuminate\Session\Middleware.php(72):
Illuminate\Foundation\Application->handle(Object(Illuminate\Http\Request), 1, true) #29 D:\htdocs\artisan_error\vendor\laravel\framework\src\Illuminate\Cookie\Queue.php(47): Illuminate\Session\Middleware->handle(Object(Illuminate\Http\Request), 1, true) #30 D:\htdocs\artisan_error\vendor\laravel\framework\src\Illuminate\Cookie\Guard.php(51): Illuminate\Cookie\Queue->handle(Object(Illuminate\Http\Request), 1, true) #31 D:\htdocs\artisan_error\vendor\stack\builder\src\Stack\StackedHttpKernel.php(23): Illuminate\Cookie\Guard->handle(Object(Illuminate\Http\Request), 1, true) #32 D:\htdocs\artisan_error\vendor\laravel\framework\src\Illuminate\Foundation\Application.php(606): Stack\StackedHttpKernel->handle(Object(Illuminate\Http\Request)) #33 D:\htdocs\artisan_error\public\index.php(49): Illuminate\Foundation\Application->run() #34 {main}
异常 'ErrorException' 带有消息 '使用未定义的常量 STDIN - 在 D:\htdocs\artisan_error\vendor\symfony\console\Symfony\Component\Console\Helper\QuestionHelper.php:112 堆栈跟踪:#0 中假定为 'STDIN'' D:\htdocs\artisan_error\vendor\symfony\console\Symfony\Component\Console\Helper\QuestionHelper.php(112): Illuminate\Exception\Handler->handleError(8, 'Use of undefine...', 'D :\htdocs\artis...', 112, Array) #1 D:\htdocs\artisan_error\vendor\symfony\console\Symfony\Component\Console\Helper\QuestionHelper.php(49): Symfony\Component\Console\ Helper\QuestionHelper->doAsk(Object(Symfony\Component\Console\Output\NullOutput), Object(Symfony\Component\Console\Question\ConfirmationQuestion)) #2 D:\htdocs\artisan_error\vendor\laravel\framework\src\照亮\控制台\Command.php(186):Symfony\Component\Console\Helper\QuestionHelper->ask(Object(Symfony\Component\Console\Input\ArrayInput), Object(Symfony\Component\Console\Output\NullOutput), Object(Symfony\Component\Console\Question\ConfirmationQuestion )) #3 D:\htdocs\artisan_error\vendor\laravel\framework\src\Illuminate\Console\ConfirmableTrait.php(21): Illuminate\Console\Command->confirm('你真的...') # 4 D:\htdocs\artisan_error\vendor\laravel\framework\src\Illuminate\Database\Console\Migrations\MigrateCommand.php(59): Illuminate\Database\Console\Migrations\MigrateCommand->confirmToProceed()\htdocs\artisan_error\vendor\laravel\framework\src\Illuminate\Console\ConfirmableTrait.php(21): Illuminate\Console\Command->confirm('你真的...') #4 D:\htdocs\ artisan_error\vendor\laravel\framework\src\Illuminate\Database\Console\Migrations\MigrateCommand.php(59): Illuminate\Database\Console\Migrations\MigrateCommand->confirmToProceed()\htdocs\artisan_error\vendor\laravel\framework\src\Illuminate\Console\ConfirmableTrait.php(21): Illuminate\Console\Command->confirm('你真的...') #4 D:\htdocs\ artisan_error\vendor\laravel\framework\src\Illuminate\Database\Console\Migrations\MigrateCommand.php(59): Illuminate\Database\Console\Migrations\MigrateCommand->confirmToProceed()
5 D:\htdocs\artisan_error\vendor\laravel\framework\src\Illuminate\Console\Command.php(112):
Illuminate\Database\Console\Migrations\MigrateCommand->fire() #6 D:\htdocs\artisan_error\vendor\symfony\console\Symfony\Component\Console\Command\Command.php(252): Illuminate\Console\Command- >execute(Object(Symfony\Component\Console\Input\ArrayInput), Object(Symfony\Component\Console\Output\NullOutput)) #7 D:\htdocs\artisan_error\vendor\laravel\framework\src\Illuminate\Console\ Command.php(100): Symfony\Component\Console\Command\Command->run(Object(Symfony\Component\Console\Input\ArrayInput), Object(Symfony\Component\Console\Output\NullOutput)) #8 D: \htdocs\artisan_error\vendor\laravel\framework\src\Illuminate\Console\Application.php(96): Illuminate\Console\Command->run(Object(Symfony\Component\Console\Input\ArrayInput), Object(Symfony\ Component\Console\Output\NullOutput)) #9 [内部函数]:Illuminate\Console\Application->call('migrate') #10 D:\htdocs\artisan_error\vendor\laravel\framework\src\Illuminate\Foundation\Artisan.php(57): call_user_func_array(Array, Array) #11 D :\htdocs\artisan_error\vendor\laravel\framework\src\Illuminate\Support\Facades\Facade.php(208): Illuminate\Foundation\Artisan->__call('call', Array) #12 D:\htdocs\artisan_error \vendor\laravel\framework\src\Illuminate\Support\Facades\Facade.php(208): Illuminate\Foundation\Artisan->call('migrate') #13 D:\htdocs\artisan_error\app\controllers\HomeController. php(160): Illuminate\Support\Facades\Facade::__callStatic('call', Array) #14 D:\htdocs\artisan_error\app\controllers\HomeController.php(160): Illuminate\Support\Facades\Artisan: :call('迁移') #15 D:\htdocs\artisan_error\app\controllers\HomeController.php(145): HomeController->InstallDatabaseStructure() #16 D:\htdocs\artisan_error\app\controllers\HomeController.php(127): HomeController->WriteDatabaseCredentials('localhost' , 'laravel-aplikac...', 'root', '') #17 [内部函数]: HomeController->postTestDatabaseConnection() #18 D:\htdocs\artisan_error\vendor\laravel\framework\src\Illuminate\Routing \Controller.php(231): call_user_func_array(Array, Array) #19 D:\htdocs\artisan_error\vendor\laravel\framework\src\Illuminate\Routing\ControllerDispatcher.php(93): Illuminate\Routing\Controller->callAction ('postTestDatabas...', 数组)HomeController->WriteDatabaseCredentials('localhost', 'laravel-aplikac...', 'root', '') #17 [内部函数]:HomeController->postTestDatabaseConnection() #18 D:\htdocs\artisan_error\vendor\laravel \framework\src\Illuminate\Routing\Controller.php(231): call_user_func_array(Array, Array) #19 D:\htdocs\artisan_error\vendor\laravel\framework\src\Illuminate\Routing\ControllerDispatcher.php(93): Illuminate\Routing\Controller->callAction('postTestDatabas...', Array)HomeController->WriteDatabaseCredentials('localhost', 'laravel-aplikac...', 'root', '') #17 [内部函数]:HomeController->postTestDatabaseConnection() #18 D:\htdocs\artisan_error\vendor\laravel \framework\src\Illuminate\Routing\Controller.php(231): call_user_func_array(Array, Array) #19 D:\htdocs\artisan_error\vendor\laravel\framework\src\Illuminate\Routing\ControllerDispatcher.php(93): Illuminate\Routing\Controller->callAction('postTestDatabas...', Array)Array) #19 D:\htdocs\artisan_error\vendor\laravel\framework\src\Illuminate\Routing\ControllerDispatcher.php(93): Illuminate\Routing\Controller->callAction('postTestDatabas...', Array)Array) #19 D:\htdocs\artisan_error\vendor\laravel\framework\src\Illuminate\Routing\ControllerDispatcher.php(93): Illuminate\Routing\Controller->callAction('postTestDatabas...', Array)
20 D:\htdocs\artisan_error\vendor\laravel\framework\src\Illuminate\Routing\ControllerDispatcher.php(62):
Illuminate\Routing\ControllerDispatcher->call(Object(HomeController), Object(Illuminate\Routing\Route), 'postTestDatabas...') #21 D:\htdocs\artisan_error\vendor\laravel\framework\src\Illuminate\Routing \Router.php(930): Illuminate\Routing\ControllerDispatcher->dispatch(Object(Illuminate\Routing\Route), Object(Illuminate\Http\Request), 'HomeController', 'postTestDatabas...') #22 [内部函数]: Illuminate\Routing\Router->Illuminate\Routing{closure}() #23 D:\htdocs\artisan_error\vendor\laravel\framework\src\Illuminate\Routing\Route.php(105): call_user_func_array(Object( Closure), Array) #24 D:\htdocs\artisan_error\vendor\laravel\framework\src\Illuminate\Routing\Router.php(996): Illuminate\Routing\Route->run(Object(Illuminate\Http\Request) ) #25 D:\htdocs\artisan_error\vendor\laravel\framework\src\Illuminate\Routing\Router.php(964): Illuminate\Routing\Router->dispatchToRoute(Object(Illuminate\Http\Request))
26 D:\htdocs\artisan_error\vendor\laravel\framework\src\Illuminate\Foundation\Application.php(738):
Illuminate\Routing\Router->dispatch(Object(Illuminate\Http\Request))
27 D:\htdocs\artisan_error\vendor\laravel\framework\src\Illuminate\Foundation\Application.php(708):
Illuminate\Foundation\Application->dispatch(Object(Illuminate\Http\Request))
28 D:\htdocs\artisan_error\vendor\laravel\framework\src\Illuminate\Session\Middleware.php(72):
Illuminate\Foundation\Application->handle(Object(Illuminate\Http\Request), 1, true) #29 D:\htdocs\artisan_error\vendor\laravel\framework\src\Illuminate\Cookie\Queue.php(47): Illuminate\Session\Middleware->handle(Object(Illuminate\Http\Request), 1, true) #30 D:\htdocs\artisan_error\vendor\laravel\framework\src\Illuminate\Cookie\Guard.php(51): Illuminate\Cookie\Queue->handle(Object(Illuminate\Http\Request), 1, true) #31 D:\htdocs\artisan_error\vendor\stack\builder\src\Stack\StackedHttpKernel.php(23): Illuminate\ Cookie\Guard->handle(Object(Illuminate\Http\Request), 1, true) #32 D:\htdocs\artisan_error\vendor\laravel\framework\src\Illuminate\Foundation\Application.php(606): Stack\ StackedHttpKernel->handle(Object(Illuminate\Http\Request)) #33 D:\htdocs\artisan_error\public\index.php(49):Illuminate\Foundation\Application->run() #34 {main}
Is everything done properly on my side?
一切都在我身边正确完成吗?
composer.js contains:
composer.js 包含:
{
"name": "laravel/laravel",
"description": "The Laravel Framework.",
"keywords": ["framework", "laravel"],
"license": "MIT",
"require": {
"laravel/framework": "4.2.*",
"way/generators": "dev-master"
},
"autoload": {
"classmap": [
"app/commands",
"app/controllers",
"app/models",
"app/database/migrations",
"app/database/seeds",
"app/tests/TestCase.php"
]
},
"scripts": {
"post-install-cmd": [
"php artisan clear-compiled",
"php artisan optimize"
],
"post-update-cmd": [
"php artisan clear-compiled",
"php artisan optimize"
],
"post-create-project-cmd": [
"php artisan key:generate"
]
},
"config": {
"preferred-install": "dist"
},
"minimum-stability": "stable"
}
回答by Yassine Khachlek
Yes, there is a problem actually with the last version,all previous sources are not working, should use :
是的,最后一个版本实际上有问题,所有以前的来源都不起作用,应该使用:
Artisan::call('migrate', array('--force' => true));
Tested and working fine.
经测试,工作正常。
回答by Marwelln
Use of undefined constant STDIN
seems to be a Symfony error, see github.com/symfony/symfony/issues/10795.
Use of undefined constant STDIN
似乎是 Symfony 错误,请参阅github.com/symfony/symfony/issues/10795。
A composer update
should fix your problem.
Acomposer update
应该可以解决您的问题。
回答by Jordi Puigdellívol
I think you have to add a '-n'=>true
to your call
我想你必须'-n'=>true
在你的电话中添加一个
since you are in production and a "are you sure question is fired"
因为您正在生产并且“您确定问题被解雇了”
so it will be like
所以它会像
Artisan::call('migrate',array('-n'=>true));
Artisan::call('migrate',array('-n'=>true));
回答by Fristi
A bit of information on this topic, for anyone that comes across this:
有关此主题的一些信息,对于遇到此问题的任何人:
This happens because the migrate
command in a production environment will ask for confirmation. This is however not possible in the context of a web request, so the command fails. To stop it from asking for confirmation, use the --force
flag.
发生这种情况是因为migrate
生产环境中的命令会要求确认。然而,这在 Web 请求的上下文中是不可能的,因此命令失败。要阻止它要求确认,请使用--force
标志。
The error Use of undefined constant STDIN - assumed 'STDIN
is basically symfony telling you it has no standard input that it can use to query user input. This is expected behavior if you're not running the command in a terminal. This behavior still exists in the current version of symfony/console
(5.0.* as of writing).
该错误Use of undefined constant STDIN - assumed 'STDIN
基本上是 symfony 告诉您它没有可用于查询用户输入的标准输入。如果您不在终端中运行命令,这是预期的行为。此行为在当前版本symfony/console
(5.0.* 撰写时)中仍然存在。
Also please note that trying to manually define STDIN as proposed in http://github.com/symfony/symfony/issues/10795won't work in this case.
另请注意,在这种情况下,尝试手动定义http://github.com/symfony/symfony/issues/10795 中建议的 STDIN将不起作用。