Skip to content

Config options

Justin Hileman edited this page Mar 21, 2023 · 20 revisions

🎛 Config options

Option Description

casters

PsySH uses symfony/var-dumper’s casters for presenting scalars, resources, arrays and objects. You can enable additional casters, or write your own! See caster documentation.

Default: []

colorMode

By default, output contains colors if support for them is detected. To override, use \Psy\Configuration::COLOR_MODE_FORCED to force colors in output, and \Psy\Configuration::COLOR_MODE_DISABLED to disable colors in output.

Default: \Psy\Configuration::COLOR_MODE_AUTO

commands

While PsySH ships with a bunch of great commands, it’s possible to add your own for even more awesome. Any Psy command added here will be available in your Psy shell sessions.

Default: []

defaultIncludes

"Default includes" will be included once at the beginning of every PsySH session. This is a good place to add autoloaders for your favorite libraries.

Default: []

eraseDuplicates

If set to true, the history will not keep duplicate entries. Newest entries override oldest. This is the equivalent of the HISTCONTROL=erasedups setting in bash.

Default: false

errorLoggingLevel

While PsySH respects the current error_reporting level, and doesn’t throw exceptions for all errors, it does log all errors regardless of level. Set errorLoggingLevel to 0 to prevent logging non-thrown errors. Set it to any valid error_reporting value to log only errors which match that level.

Default: E_ALL

forceArrayIndexes

Always show array indexes (even for numeric arrays)

Default: false

formatterStyles (deprecated)

Override output formatting colors. These have been replaced by 🎨 Themes. To migrate existing settings change them from formatterStyles:

'formatterStyles' => [
  // name => [foreground, background, [options]],
  'error' => ['black', 'red', ['bold']],
],

… to custom theme styles:

'theme' => [
  'styles' => [
    // name => [foreground, background, [options]],
    'error' => ['black', 'red', ['bold']],
  ],
],

Default: []

historySize

Sets the maximum number of entries the history can contain. If set to zero, the history size is unlimited.

Default: 0

interactiveMode

PsySH defaults to interactive mode in a terminal, and non-interactive mode when input is coming from a pipe. To override, use \Psy\Configuration::INTERACTIVE_MODE_FORCED to force interactive mode, \Psy\Configuration::INTERACTIVE_MODE_DISABLED to force non-interactive mode, and \Psy\Configuration::INTERACTIVE_MODE_AUTO to choose based on the type of connection (terminal or pipe).

Default: \Psy\Configuration::INTERACTIVE_MODE_AUTO

matchers

You can write your own tab completion matchers, too! Here are some that enable tab completion for MongoDB database and collection names:

[
  new \Psy\TabCompletion\Matcher\MongoClientMatcher,
  new \Psy\TabCompletion\Matcher\MongoDatabaseMatcher,
]

Default: []

pager

If this is not set, it falls back to less. It is recommended that you set up cli.pager in your php.ini with your preferred output pager.

If you want to use a different pager only for Psy shell sessions, you can override it here.

Default: cli.pager ini setting

prompt (deprecated)

Specify a custom prompt. This has been replaced by 🎨 Themes. To migrate existing settings change this from prompt:

'prompt' => '$> ',

… to custom theme configuration:

'theme' => [
  'prompt' => '$> ',
],

rawOutput

Print var_export-style return values. This is set by the --raw-output (-r) flag, and really only makes sense when non-interactive, e.g. executing stdin.

Default: false

requireSemicolons

PsySH automatically inserts semicolons at the end of input if a statement is missing one. To disable this, set requireSemicolons to true.

Default: false

runtimeDir

Set the shell's temporary directory location. Defaults to /psysh inside the system's temp dir unless explicitly overridden.

Default: follows XDG runtimeDir specification.

startupMessage

Display an additional startup message. You can color and style the message thanks to the Symfony Console tags. See coloring docs for more details.

Default: ""

theme

PsySH supports output themes, which control prompt strings, formatter styles and colors, and compact output.

Available options are modern, compact, classic or a custom theme. See 🎨 Themes for more info.

'theme' => 'modern',

Default: "modern"

updateCheck

Frequency of update checks when starting an interactive shell session. Valid options are "always", "daily", "weekly", and "monthly".

To disable update checks entirely, set to "never".

Default: "weekly"

useBracketedPaste

Enable bracketed paste support. If you use PHP built with readline (not libedit) and a relatively modern terminal, enable this.

Default: false

usePcntl

By default, PsySH will use a 'forking' execution loop if pcntl is installed. This is by far the best way to use it, but you can override the default by explicitly disabling this functionality here.

Default: true

useReadline

PsySH uses readline if you have it installed, because interactive input is pretty awful without it. But you can explicitly disable it if you hate yourself or something.

If readline is disabled (or unavailable) then terminal input is subject to the line discipline provided for TTYs by the OS, which may impose a maximum line size (4096 chars in GNU/Linux, for example) with larger lines being truncated before reaching PsySH.

Default: true

useTabCompletion

You can disable tab completion if you want to. Not sure why you’d want to.

Default: true

useUnicode

PsySH uses a couple of UTF-8 characters in its own output. These can be disabled, mostly to work around code page issues. Because Windows.

Note that this does not disable Unicode output in general, it just makes it so PsySH won’t output any itself.

Default: true

verbosity

Change output verbosity. This is equivalent to the --verbose, -vv, -vvv and --quiet command line flags. Choose from:

  • \Psy\Configuration::VERBOSITY_QUIET (this is really quiet)
  • \Psy\Configuration::VERBOSITY_NORMAL
  • \Psy\Configuration::VERBOSITY_VERBOSE
  • \Psy\Configuration::VERBOSITY_VERY_VERBOSE
  • \Psy\Configuration::VERBOSITY_DEBUG

Default: \Psy\Configuration::VERBOSITY_NORMAL

warnOnMultipleConfigs

If multiple versions of the same configuration or data file exist, PsySH will use the file with highest precedence, and will silently ignore all others. With this enabled, a warning will be emitted (but not an exception thrown) if multiple configuration or data files are found.

This will default to true in a future release, but is false for now.

Default: false

yolo

Run PsySH without input validation. You don't want this.

Default: false