首页 文章

将Laravel升级到4.2后,Artisan :: call('migrate')无效

提问于
浏览
11

我在Laravel控制器方法中使用 Artisan::call('migrate'); ,它在Laravel版本为4.1时工作 . 在使用 composer update 命令(并在composer.js中设置 "laravel/framework": "4.2.*" )更新Laravel之后,此控制器方法(因为这是其中唯一的命令)不再起作用 .

我甚至在/app/config/app.php中添加了 'cipher' => MCRYPT_RIJNDAEL_256 ,如http://laravel.com/docs/upgrade#upgrade-4.2中所述

那已经发生了:http://laravel.io/forum/06-02-2014-not-able-run-artisan-commands

当我将Artisan :: call('migrate')放入try / catch块控制器时,如下所示:

public function ArtMigr(){
    try {
            Artisan::call('migrate');
        } catch (Exception $e) {
            echo $e;
        }   

}

而且我收到以下错误:

异常'ErrorException',消息'使用未定义的常量STDIN - 在D:\ htdocs \ artisan_error \ vendor \ symfony \ console \ Symfony \ Component \ Console \ Helper \ QuestionHelper.php中假定为'STDIN':112堆栈跟踪:# 0 D:\ htdocs \ artisan_error \ vendor \ symfony \ console \ Symfony \ Component \ Console \ Helper \ QuestionHelper.php(112):Illuminate \ Exception \ Handler-> handleError(8,'使用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(对象(Symfony \ Component \ Console \ Output \ NullOutput),对象(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(对象(Symfony \ Component \ Console \ Input \ ArrayInput),对象(Symfony \ Component \ Console \ Output \ NullOutput) ,对象(Symfony \ Component \ Console \ Question \ Confi rmationQuestion))#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()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(对象(Symfony \ Component \ Console \ Input \ ArrayInput),对象(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 \ N. ullOutput))#8 D:\ htdocs \ artisan_error \ vendor \ laravel \ framework \ src \ Illuminate \ Console \ Application.php(96):Illuminate \ Console \ Command-> run(对象(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 - >调用('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 [内部函数]: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):照亮\ 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 \ Contro llerDispatcher-> dispatch(Object(Illuminate \ Routing \ Route),Object(Illuminate \ Http \ Request),'HomeController','postTestDatabas ...')#22 [内部函数]:Illuminate \ Routing \ Router-> Illuminate \路由()#23 D:\ htdocs \ artisan_error \ vendor \ laravel \ framework \ src \ Illuminate \ Routing \ Route.php(105):call_user_func_array(Object(Closure),Array)#24D:\ 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 \ Req) uest),1,true)#30 D:\ htdocs \ artisan_error \ vendor \ laravel \ framework \ src \ Illuminate \ Cookie \ Guard.php(51):Illuminate \ Cookie \ Queue-> handle(Object(Illuminate \ Http \)请求),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

一切都在我身边做得好吗?

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"
}

3 回答

  • 19

    Use of undefined constant STDIN 似乎是一个Symfony错误,请参阅github.com/symfony/symfony/issues/10795 .

    composer update 应该解决您的问题 .

  • 2

    是的,实际上最后一个版本存在问题,所有以前的资源都不起作用,应该使用:

    Artisan::call('migrate', array('--force' => true));
    

    测试和工作正常 .

  • 1

    我想你必须在你的电话中添加一个 '-n'=>true

    因为你正在制作并且“你确定问题被解雇了”

    所以它会像

    Artisan::call('migrate',array('-n'=>true));

相关问题