12

After upgrade from 5.3 to 5.4, Follow the instructions:

In order to continue using the tinker Artisan command, you should also install the laravel/tinker package:

composer require laravel/tinker

Once the package has been installed, you should add" Laravel\Tinker\TinkerServiceProvider::class to the providers array in your config/app.php configuration file.

After hours of search..got this question but is not working.

Any ideas?

config.json

{
"name": "laravel/laravel",
"description": "The Laravel Framework.",
"keywords": ["framework", "laravel"],
"license": "MIT",
"type": "project",
"require": {
    "php": ">=5.6.4",
    "laravel/framework": "5.4.*",
    "hisorange/browser-detect": "2.0.2",
    "guzzlehttp/guzzle": "^6.2",
    "maxmind-db/reader": "~1.0",
    "laravel/tinker": "^1.0"
},
"require-dev": {
    "fzaninotto/faker": "~1.4",
    "mockery/mockery": "0.9.*",
    "phpunit/phpunit": "~5.7",
    "symfony/css-selector": "3.1.*",
    "symfony/dom-crawler": "3.1.*"
},
"autoload": {
    "classmap": [
        "database"
    ],
    "psr-4": {
        "App\\": "app/"
    }
},
"autoload-dev": {
    "classmap": [
        "tests/TestCase.php"
    ]
},
"scripts": {
    "post-root-package-install": [
        "php -r \"file_exists('.env') || copy('.env.example', '.env');\""
    ],
    "post-create-project-cmd": [
        "php artisan key:generate"
    ],
    "post-install-cmd": [
        "Illuminate\\Foundation\\ComposerScripts::postInstall",
        "php artisan optimize"
    ],
    "post-update-cmd": [
        "Illuminate\\Foundation\\ComposerScripts::postUpdate",
        "php artisan optimize"
    ]
},
"config": {
    "preferred-install": "dist",
    "disable-tls": true,
    "secure-http": false
}

}

config/app.php

return [

/*
|--------------------------------------------------------------------------
| Application Name
|--------------------------------------------------------------------------
|
| This value is the name of your application. This value is used when the
| framework needs to place the application's name in a notification or
| any other location as required by the application or its packages.
*/

'name' => 'App',

/*
|--------------------------------------------------------------------------
| Application Environment
|--------------------------------------------------------------------------
|
| This value determines the "environment" your application is currently
| running in. This may determine how you prefer to configure various
| services your application utilizes. Set this in your ".env" file.
|
*/

'env' => env('APP_ENV', 'development'),

/*
|--------------------------------------------------------------------------
| Application Debug Mode
|--------------------------------------------------------------------------
|
| When your application is in debug mode, detailed error messages with
| stack traces will be shown on every error that occurs within your
| application. If disabled, a simple generic error page is shown.
|
*/

'debug' => env('APP_DEBUG', true),

/*
|--------------------------------------------------------------------------
| Application URL
|--------------------------------------------------------------------------
|
| This URL is used by the console to properly generate URLs when using
| the Artisan command line tool. You should set this to the root of
| your application so that it is used when running Artisan tasks.
|
*/

'url' => env('APP_URL', 'http://localhost'),

/*
|--------------------------------------------------------------------------
| Application Timezone
|--------------------------------------------------------------------------
|
| Here you may specify the default timezone for your application, which
| will be used by the PHP date and date-time functions. We have gone
| ahead and set this to a sensible default for you out of the box.
|
*/

'timezone' => 'America/Tegucigalpa',

/*
|--------------------------------------------------------------------------
| Application Locale Configuration
|--------------------------------------------------------------------------
|
| The application locale determines the default locale that will be used
| by the translation service provider. You are free to set this value
| to any of the locales which will be supported by the application.
|
*/

'locale' => 'en',

/*
|--------------------------------------------------------------------------
| Application Fallback Locale
|--------------------------------------------------------------------------
|
| The fallback locale determines the locale to use when the current one
| is not available. You may change the value to correspond to any of
| the language folders that are provided through your application.
|
*/

'fallback_locale' => 'en',

/*
|--------------------------------------------------------------------------
| Encryption Key
|--------------------------------------------------------------------------
|
| This key is used by the Illuminate encrypter service and should be set
| to a random, 32 character string, otherwise these encrypted strings
| will not be safe. Please do this before deploying an application!
|
*/

'key' => env('APP_KEY'),

'cipher' => 'AES-256-CBC',

/*
|--------------------------------------------------------------------------
| Logging Configuration
|--------------------------------------------------------------------------
|
| Here you may configure the log settings for your application. Out of
| the box, Laravel uses the Monolog PHP logging library. This gives
| you a variety of powerful log handlers / formatters to utilize.
|
| Available Settings: "single", "daily", "syslog", "errorlog"
|
*/

'log' => env('APP_LOG', 'single'),

'log_level' => env('APP_LOG_LEVEL', 'debug'),

/*
|--------------------------------------------------------------------------
| Autoloaded Service Providers
|--------------------------------------------------------------------------
|
| The service providers listed here will be automatically loaded on the
| request to your application. Feel free to add your own services to
| this array to grant expanded functionality to your applications.
|
*/

'providers' => [

    /*
     * Laravel Framework Service Providers...
     */
    Illuminate\Auth\AuthServiceProvider::class,
    Illuminate\Broadcasting\BroadcastServiceProvider::class,
    Illuminate\Bus\BusServiceProvider::class,
    Illuminate\Cache\CacheServiceProvider::class,
    Illuminate\Foundation\Providers\ConsoleSupportServiceProvider::class,
    Illuminate\Cookie\CookieServiceProvider::class,
    Illuminate\Database\DatabaseServiceProvider::class,
    Illuminate\Encryption\EncryptionServiceProvider::class,
    Illuminate\Filesystem\FilesystemServiceProvider::class,
    Illuminate\Foundation\Providers\FoundationServiceProvider::class,
    Illuminate\Hashing\HashServiceProvider::class,
    Illuminate\Mail\MailServiceProvider::class,
    Illuminate\Notifications\NotificationServiceProvider::class,
    Illuminate\Pagination\PaginationServiceProvider::class,
    Illuminate\Pipeline\PipelineServiceProvider::class,
    Illuminate\Queue\QueueServiceProvider::class,
    Illuminate\Redis\RedisServiceProvider::class,
    Illuminate\Auth\Passwords\PasswordResetServiceProvider::class,
    Illuminate\Session\SessionServiceProvider::class,
    Illuminate\Translation\TranslationServiceProvider::class,
    Illuminate\Validation\ValidationServiceProvider::class,
    Illuminate\View\ViewServiceProvider::class,
    \hisorange\BrowserDetect\Provider\BrowserDetectService::class,
    Laravel\Tinker\TinkerServiceProvider::class,

    /*
     * Package Service Providers...
     */

    //

    /*
     * Application Service Providers...
     */
],

/*
|--------------------------------------------------------------------------
| Class Aliases
|--------------------------------------------------------------------------
|
| This array of class aliases will be registered when this application
| is started. However, feel free to register as many as you wish as
| the aliases are "lazy" loaded so they don't hinder performance.
|
*/

'aliases' => [

    'App' => Illuminate\Support\Facades\App::class,
    'Artisan' => Illuminate\Support\Facades\Artisan::class,
    'Auth' => Illuminate\Support\Facades\Auth::class,
    'Blade' => Illuminate\Support\Facades\Blade::class,
    'Bus' => Illuminate\Support\Facades\Bus::class,
    'Cache' => Illuminate\Support\Facades\Cache::class,
    'Config' => Illuminate\Support\Facades\Config::class,
    'Cookie' => Illuminate\Support\Facades\Cookie::class,
    'Crypt' => Illuminate\Support\Facades\Crypt::class,
    'DB' => Illuminate\Support\Facades\DB::class,
    'Eloquent' => Illuminate\Database\Eloquent\Model::class,
    'Event' => Illuminate\Support\Facades\Event::class,
    'File' => Illuminate\Support\Facades\File::class,
    'Gate' => Illuminate\Support\Facades\Gate::class,
    'Hash' => Illuminate\Support\Facades\Hash::class,
    'Lang' => Illuminate\Support\Facades\Lang::class,
    'Log' => Illuminate\Support\Facades\Log::class,
    'Mail' => Illuminate\Support\Facades\Mail::class,
    'Notification' => Illuminate\Support\Facades\Notification::class,
    'Password' => Illuminate\Support\Facades\Password::class,
    'Queue' => Illuminate\Support\Facades\Queue::class,
    'Redirect' => Illuminate\Support\Facades\Redirect::class,
    'Redis' => Illuminate\Support\Facades\Redis::class,
    'Request' => Illuminate\Support\Facades\Request::class,
    'Response' => Illuminate\Support\Facades\Response::class,
    'Route' => Illuminate\Support\Facades\Route::class,
    'Schema' => Illuminate\Support\Facades\Schema::class,
    'Session' => Illuminate\Support\Facades\Session::class,
    'Storage' => Illuminate\Support\Facades\Storage::class,
    'URL' => Illuminate\Support\Facades\URL::class,
    'Validator' => Illuminate\Support\Facades\Validator::class,
    'View' => Illuminate\Support\Facades\View::class,
    'BrowserDetect' => \hisorange\BrowserDetect\Facade\Parser::class,
],

];

EDIT Well, Looks like we need to register the command in our /Console/Kernel.php

Modify the $commands property. With this:

    protected $commands = [
    //
    \Laravel\Tinker\Console\TinkerCommand::class,
];

After that, make a composer dump-autoload

Community
  • 1
  • 1
Oscar Romero
  • 231
  • 1
  • 2
  • 11
  • 2
    What's not working? Are there error messages? – user1669496 Mar 06 '17 at 20:49
  • Did you run `composer require laravel/tinker` and then modify `config/app.php` as instructed? – ChrisGPT was on strike Mar 06 '17 at 20:49
  • @user3158900 yeah, got "command tinker is not defined". – Oscar Romero Mar 06 '17 at 20:51
  • @Chris Yes, follow the instructions and is not working. – Oscar Romero Mar 06 '17 at 20:51
  • 1
    Please [edit] your question and add the relevant section of `config/app.php`. – ChrisGPT was on strike Mar 06 '17 at 20:52
  • @Chris, Checkout the images. – Oscar Romero Mar 06 '17 at 20:56
  • Please don't post code in screenshots. They can't be searched or copied and offer poor usability. Instead, paste the code as text directly into your question. If you select it and click the `{}` button or Ctrl+K the code block will be indented by four spaces, which will cause it to be rendered as code. – ChrisGPT was on strike Mar 06 '17 at 20:57
  • Ok, I modified the question, What next?...Somebody that fight with this update? – Oscar Romero Mar 06 '17 at 21:27
  • try composer dump-autoload or composer update – dparoli Mar 06 '17 at 21:44
  • @dparoli not working my friend. – Oscar Romero Mar 06 '17 at 21:55
  • You've really got some other issues going on here. I tried recreating the setup you have shared here, but the problem is the packages you have defined are not compatible with each other. Specifically, the `hisorange/browser-detect` package is not compatible with Laravel 5.4, as it uses the `share()` method on the container, which was removed. When I attempted to start artisan, I received an Exception: `FatalThrowableError: Call to undefined method Illuminate\Foundation\Application::share() in vendor/hisorange/browser-detect/src/Provider/BrowserDetectService.php:48` – patricus Mar 07 '17 at 02:51
  • @patricus Thanks for your answer. Yeah, I cover that on this link https://github.com/hisorange/browser-detect/pull/59 – Oscar Romero Mar 07 '17 at 03:53
  • @OscarRomero While the `master` branch has been updated, your `composer.json` is using the `2.0.2` tag, which does not have this update in it. Did you manually change the code in your vendor directory? If not, you should be getting an Exception. – patricus Mar 07 '17 at 07:19
  • 1
    Yes, I have to do it manually. It looks like the repo is not updated. I know it is bad practice, but the time and the client ... you know. – Oscar Romero Mar 09 '17 at 14:37
  • 1
    i have exactly the same problem - made a test on a new laravel app and tinker is working - with currently working on it doesn't - i get "Command "tinker" is not defined – Paolo Falomo May 29 '17 at 13:37

3 Answers3

10

If your project is earlier to Laravel 5.4. As sicne laravel 5.4 tinker comes as default with Laravel project

Step 1 : Install tinker

composer require laravel/tinker

Step 2 : Add provider class name into /config/app.php file

If you open the config/app.php file included with Laravel, you will see a providers array.

providers' => [     .
                    .
                    App\Providers\CountdownTimersServiceProvider::class,
                    Laravel\Tinker\TinkerServiceProvider::class

],
Amitesh Bharti
  • 14,264
  • 6
  • 62
  • 62
6

Install Tinker:

composer require "laravel/tinker". Then set the providers under config/app.php like that: 'providers' => [ ... ... Laravel\Tinker\TinkerServiceProvider::class, ],

Mg Mg Kyaw
  • 81
  • 5
  • I'm not sure if it's that I have Laravel 5.7, but `composer require laravel/tinker` was enaugh for me to run `php artisan tinker` successfully (I did not have to add a provider to app.php) – jave.web Sep 09 '19 at 20:25
0

I ran into this on a production server, but not with the very same code in my development environment. Turns out that I had my configuration (and routes) cached on the server and that regenerating the configuration cache made the tinker command suddenly show up again.

Michael Cordingley
  • 1,485
  • 1
  • 11
  • 23