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

I've even added 'cipher' => MCRYPT_RIJNDAEL_256 in /app/config/app.php as stated in 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;
        }   

}

我得到了以下错误:

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}

我这边一切都做好了吗?

创作者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"
}

推荐答案

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

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

经过测试,工作正常.

Laravel相关问答推荐

为什么在Blade 文件中输出用户通知时出现错误?

Laravel 9 中使用 WHERE 子句的列的 SUM

如何避免谷歌翻译翻译:参数

如何在 Laravel 中使用 Vue 路由?

如何将用户对象绑定到中间件中的请求

Laravel:子文件夹中的 lang 文件

"public/index.php" 可以在 laravel 中按组写入

Laravel 如何处理来自浏览器的 PUT 请求?

Laravel - 加载常见的页眉和页脚以查看

调用未定义函数 Illuminate\Encryption\openssl_decrypt()

Laravel 5 - 仅在特定页面/控制器(页面特定assets资源)上添加样式表

带有 Laravel Passport 的 SSO

Laravel 5.5 在迁移文件中设置整数字段的大小

Laravel 5.3 Electron邮件队列中不允许序列化关闭

升级到 Laravel 5.2 会使所有会话失效

Laravel assets资源与混合

Laravel 隐藏属性.例如密码 - 安全

将值插入隐藏输入 Laravel Blade

使用 Laravel Mix 合并多个文件

Laravel 5 Illuminate\Http\Request 的方法不允许静态调用