minor #10470 [server:run] [#10461] Add docs about custom environment (WouterJ)

This PR was merged into the 2.3 branch.

Discussion
----------

[server:run] [#10461] Add docs about custom environment

| Q             | A
| ------------- | ---
| Fixed tickets | #10461, https://github.com/symfony/symfony-docs/issues/3688
| License       | MIT

It's better to document this specific usecase in the command help.

Commits
-------

6871a61 [#10461] Add docs about custom environment
fixed CS
feature #10466 [Debug] add a screaming mode to ErrorHandler (nicolas-grekas)

This PR was merged into the 2.5-dev branch.

Discussion
----------

[Debug] add a screaming mode to ErrorHandler

| Q             | A
| ------------- | ---
| Bug fix?      | no
| New feature?  | yes
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | none
| License       | MIT
| Doc PR        | none

Collect and display silenced PHP errors in the debug toolbar.

Commits
-------

5cc817d [Debug] add a screaming mode to ErrorHandler
[Console] Rename Command::setProcessName to Command::setProcessTitle

To be more consistant with the underlying system.
[WebProfilerBundle] enhance logs display
minor #10474 [Console] Rename Command::setProcessName to Command::setProcessTitle (lyrixx)

This PR was merged into the 2.5-dev branch.

Discussion
----------

[Console] Rename Command::setProcessName to Command::setProcessTitle

To be more consistant with the underlying system.

| Q             | A
| ------------- | ---
| Bug fix?      | no
| New feature?  | no
| BC breaks?    | no (because the 2.5 is not released yet)
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | none
| License       | MIT
| Doc PR        | none

Commits
-------

6786f6d [Console] Rename Command::setProcessName to Command::setProcessTitle
[Process] Make Process::start non-blocking on Windows platform
feature #10473 [WebProfilerBundle] enhance logs display (nicolas-grekas)

This PR was merged into the 2.5-dev branch.

Discussion
----------

[WebProfilerBundle] enhance logs display

| Q             | A
| ------------- | ---
| Bug fix?      | no
| New feature?  | yes
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | none
| License       | MIT
| Doc PR        | none

Commits
-------

3e6c940 [WebProfilerBundle] enhance logs display
[Process] Fix escaping on Windows

Windows escaping is broken since the last merges.
[Process] fixed fatal errors in getOutput and getErrorOutput when process was not started
bug #10420 [2.3][Process] Make Process::start non-blocking on Windows platform (romainneutron)

This PR was merged into the 2.3 branch.

Discussion
----------

[2.3][Process] Make Process::start non-blocking on Windows platform

| Q             | A
| ------------- | ---
| Bug fix?      | yes
| New feature?  | no
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | #9755
| License       | MIT

This PR is a proposition that solves issue #9755.

Let me sum-up what problems we have on Windows platform:
 - We can not use pipes with `proc_open` on Windows because `stream_set_blocking` does not work on this platform, resulting in blocking pipes and a blocking `Process::start` (see https://bugs.php.net/bug.php?id=51800, https://bugs.php.net/bug.php?id=47918 and https://bugs.php.net/bug.php?id=50856).
 - We can not use file handles for both `STDOUT` and `STDERR` as it might produce corrupted content (see https://bugs.php.net/bug.php?id=65650).
 - We currently use file handles for `STDOUT` and pipe for `STDERR` but it makes `Process::start` blocking.

The solution I propose here is to use native redirections, write `STDERR` / `STDOUT` in temporary files, read these files, finally cleanup.
It works pretty well, all tests pass on Windows. Better : [previous tests that were specific to this platform](https://github.com/symfony/symfony/blob/master/src/Symfony/Component/Process/Tests/AbstractProcessTest.php#L720-725) disappear as unix one are now okay :).

The drawback of this is the need of using `taskkill`: When stopping a process (`Process::stop` or in case of a timeout reached) `proc_terminate` does not kill the underlying process properly, only the `cmd` parent. The underlying process run by Process still runs after the `proc_terminate` call, having a lock on the temporary files we're using for getting the output, avoiding PHP to remove them (or any user on system) until the underlying process has finish to run).
So I use the `taskkill` Windows command to terminate the underlying process. This works well but I've to admit it's not pretty. If we do not use this hack, let's face that the underlying process is not stopped.

Last but not least, let's deal with the case we're running on Windows platform with PHP having --enable-sigchild environment (I don't know if it can really happen)
In this case:
 - we can not retrieve the `pid`
 - we can not `taskkill` the underlying process
 - it runs
 - locks remain on temporary files, we might not be able to remove them
We can't really deal with this.

Feedback more than welcome

Commits
-------

1f5bf32 [Process] Make Process::start non-blocking on Windows platform
fixed typo
[Process] Trow exceptions in case a Process method is supposed to be called after termination
bug #10480 [Process] Fixed fatal errors in getOutput and getErrorOutput when process was not started  (romainneutron)

This PR was merged into the 2.3 branch.

Discussion
----------

[Process] Fixed fatal errors in getOutput and getErrorOutput when process was not started

| Q             | A
| ------------- | ---
| Bug fix?      | yes
| New feature?  | no
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | #10022
| License       | MIT

This PR replaces #9452 and address the latest changes.
Side note : I've not updated `getExitCode`, `getExitCodeText` and `isSuccessful` as they were explicitly tested to return null in case the process is not started or terminated. I think it would be a BC break to do that.

Commits
-------

449fe01 [Process] Trow exceptions in case a Process method is supposed to be called after termination
0ae6858 [Process] fixed fatal errors in getOutput and getErrorOutput when process was not started
[Process] Fix unit tests in sigchild disabled environment
minor #10483 [2.3][Process] Fix unit tests in sigchild disabled environment (romainneutron)

This PR was merged into the 2.3 branch.

Discussion
----------

[2.3][Process] Fix unit tests in sigchild disabled environment

| Q             | A
| ------------- | ---
| Bug fix?      | no
| New feature?  | no
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| License       | MIT

We've been a bit fast when merging #10480 and tests were broken in the last update I did.

Commits
-------

5f6ee12 [Process] Fix unit tests in sigchild disabled environment
[Process] fix some typos and refactor some code
[Console] Fixed unsetting of setted attributes on OutputFormatterStyle

Unset only previous setted styles in place of all styles, before this fix,
OutputFormatterStyle reset all attributes with '\e[0m' sequence.
Now, if a foreground is setted, reset only the foreground so you can use innested attributes

Conflicts:
	src/Symfony/Component/Console/Tests/Formatter/OutputFormatterStyleTest.php
	src/Symfony/Component/Console/Tests/Formatter/OutputFormatterTest.php
	src/Symfony/Component/Console/Tests/Output/OutputTest.php
bug #10479 [2.3][Process] Fix escaping on Windows (romainneutron)

This PR was merged into the 2.3 branch.

Discussion
----------

[2.3][Process] Fix escaping on Windows

| Q             | A
| ------------- | ---
| Bug fix?      | yes
| New feature?  | no
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| License       | MIT

Windows escaping is broken since the last merges.

After digging more on Windows escaping, I realised some things:
 - We forbid environment variable expansion by escaping `%APPDATA%` to `^%"APPDATA"^%`
 - We explicitly ask for variable expansion at runtime (running the command line with the [`/V:ON`](https://github.com/symfony/symfony/blob/2.3/src/Symfony/Component/Process/Process.php#L235) flag). Running a command containing `!APPDATA!` will be escaped and expanded (our previous rule is easily overriden)
 - On platform that are not windows, we use strong escaping that prevents any variable expansion (`$PATH` will be escaped to `'$PATH'` that is not interpreted as the current PATH)

We have three possibilities:
 - Keep this behavior as this.
 - Prefer a consistent API and use a strong escaping strategy everywhere, but it would result in a BC break (see #8975).
 - Allow environment variable expansion and escape `%APPDATA%` to `"%APPDATA%"`

Any thoughts about this ?

Commits
-------

0f65f90 [Process] Fix escaping on Windows
feature #10476 [Console] Fixed unsetting of setted attributes on OutputFormatterStyle (Badkill)

This PR was merged into the 2.5-dev branch.

Discussion
----------

[Console] Fixed unsetting of setted attributes on OutputFormatterStyle

| Q             | A
| ------------- | ---
| Bug fix?      | yes
| New feature?  | no
| BC breaks?    | yes
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | none
| License       | MIT
| Doc PR        | none

Unset only previous setted styles in place of all styles, before this fix,
OutputFormatterStyle reset all attributes with '\e[0m' sequence.
Now, if a foreground is setted, reset only the foreground so you can use innested attributes

Conflicts:
	src/Symfony/Component/Console/Tests/Formatter/OutputFormatterStyleTest.php
	src/Symfony/Component/Console/Tests/Formatter/OutputFormatterTest.php
	src/Symfony/Component/Console/Tests/Output/OutputTest.php

Commits
-------

ce0c4b4 [Console] Fixed unsetting of setted attributes on OutputFormatterStyle