[Security] fixed error 500 instead of 403 if previous exception is provided to AccessDeniedException
Add support for HHVM in the getting of the PHP executable
[Process] fixed HHVM support
bug #9882 Add support for HHVM in the getting of the PHP executable (fabpot)

This PR was merged into the 2.3 branch.

Discussion
----------

Add support for HHVM in the getting of the PHP executable

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

Same as #9583 but with CS fixed, on 2.3, and with an added safeguard to only change the current behavior for HHVM.

Check for a PHP_BINARY environment variable before using the pre-defined PHP_BINARY constant.

HHVM has an explicit hhvm binary and a wrapper to mimic php functionality. We were running into issues with tests that ran in their own process where using the hhvm binary does not handle php code sent to it via stdin very well. We get "Nothing to do...pass file" exceptions. Unfortunately, the PHP_BINARY is always set to the explicit binary (the php wrapper is basically a symlink to the explicit binary). So, we thought about adding a check for a PHP_BINARY environment variable as the first choice when getting the PHP binary.

Commits
-------

876482f [Process] fixed HHVM support
539de17 Add support for HHVM in the getting of the PHP executable
disabled php.ini changes when using HHVM in .travis.yml
minor #9883 disabled php.ini changes when using HHVM in .travis.yml (fabpot)

This PR was merged into the 2.3 branch.

Discussion
----------

disabled php.ini changes when using HHVM in .travis.yml

Commits
-------

78bfd3a disabled php.ini changes when using HHVM in .travis.yml
[DomCrawler] Fixed creating form objects from form nodes.
[DependencyInjection] fixed InlineServiceDefinitionsPass to not inline a service if it's part of the current definition (to avoid an infinite loop)
bug #9884 [DomCrawler] Fixed creating form objects from named form nodes (jakzal)

This PR was merged into the 2.3 branch.

Discussion
----------

[DomCrawler] Fixed creating form objects from named form nodes

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

Commits
-------

72d6322 [DomCrawler] Fixed creating form objects from form nodes.
bug #9885 [Dependencyinjection] Fixed handling of inlined references in the AnalyzeServiceReferencesPass (fabpot)

This PR was merged into the 2.3 branch.

Discussion
----------

[Dependencyinjection] Fixed handling of inlined references in the AnalyzeServiceReferencesPass

| Q             | A
| ------------- | ---
| Bug fix?      | yes
| New feature?  | no
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | #8299, #9829
| License       | MIT
| Doc PR        | n/a

Hopefully a better fix for #9829 (ping @jakzal). Unit tests coming soon.

In some cases `InlineServiceDefinitionsPass` replaces a Reference with a service Definition. In such scenarios `AnalyzeServiceReferencesPass` was falling into an infinite loop.

Commits
-------

d650295 [DependencyInjection] fixed InlineServiceDefinitionsPass to not inline a service if it's part of the current definition (to avoid an infinite loop)
[Security] made code easier to understand, added some missing unit tests
bug #9879 [Security] Fix ExceptionListener to catch correctly AccessDeniedException if is not first exception (fabpot)

This PR was merged into the 2.3 branch.

Discussion
----------

[Security] Fix ExceptionListener to catch correctly AccessDeniedException if is not first exception

| Q             | A
| ------------- | ---
| Bug fix?      | yes
| New feature?  | no
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | #9544, #8467?, #9823
| License       | MIT
| Doc PR        |

Same as #9823 but with some refactoring of the code and with some unit tests.

When merging to 2.4, the unit tests can be simplified a bit.

Commits
-------

172fd63 [Security] made code easier to understand, added some missing unit tests
616b6c5 [Security] fixed error 500 instead of 403 if previous exception is provided to AccessDeniedException
Merge branch '2.3' into 2.4

* 2.3:
  [Security] made code easier to understand, added some missing unit tests
  [DependencyInjection] fixed InlineServiceDefinitionsPass to not inline a service if it's part of the current definition (to avoid an infinite loop)
  [DomCrawler] Fixed creating form objects from form nodes.
  disabled php.ini changes when using HHVM in .travis.yml
  [Process] fixed HHVM support
  Add support for HHVM in the getting of the PHP executable
  [Security] fixed error 500 instead of 403 if previous exception is provided to AccessDeniedException
[Security] simplified some unit tests
[Security] removed obsolete comment
Fix for cache-key conflict when having a \Traversable as choices
bug #9557 [DoctrineBridge] Fix for cache-key conflict when having a \Traversable as choices (DRvanR)

This PR was submitted for the 2.3-dev branch but it was merged into the 2.3 branch instead (closes #9557).

Discussion
----------

[DoctrineBridge] Fix for cache-key conflict when having a \Traversable as choices

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

Commits
-------

1119684 Fix for cache-key conflict when having a \Traversable as choices
[Security] Fixed problem with losing ROLE_PREVIOUS_ADMIN role.
bug #8997 [Security] Fixed problem with losing ROLE_PREVIOUS_ADMIN role. (pawaclawczyk)

This PR was squashed before being merged into the 2.3 branch (closes #8997).

Discussion
----------

[Security] Fixed problem with losing ROLE_PREVIOUS_ADMIN role.

<table>
  <tr>
    <td><b>Q</b></td>
    <td><b>A</b></td>
  </tr>
  <tr>
    <td>Bug fix?</td>
    <td>yes</td>
  </tr>
  <tr>
    <td>New feature</td>
    <td>no</td>
  </tr>
  <tr>
    <td>BC breaks?</td>
    <td>no</td>
  </tr>
  <tr>
    <td>Deprecations?</td>
    <td>no</td>
  </tr>
  <tr>
    <td>Tests pass?</td>
    <td>yes</td>
  </tr>
  <tr>
    <td>Fixed tickets</td>
    <td>#3085, #8974</td>
  </tr>
  <tr>
    <td>License</td>
    <td>MIT</td>
  </tr>
  <tr>
    <td>Doc PR</td>
    <td>n/a</td>
  </tr>
</table>

Problem occurs while user is impersonated. Authentication process generates new token and doeas not preserve role ```ROLE_PREVIOUS_ADMIN```. Ex. when parameter ```security.always_authenticate_before_granting``` is enabled.

Commits
-------

a7baa3b [Security] Fixed problem with losing ROLE_PREVIOUS_ADMIN role.
[Console] fixed column width when using the Table helper with some decoration in cells