This PR was submitted for the master branch but it was merged into the 2.2 branch instead (closes#8227).
Discussion
----------
[Process] fix issue where $_ENV contains array vals
There are cases where $env or $_ENV can contain a value that is an array
This will cause Process to throw an Array to String conversion exception
Initially I submitted a patch of Process.php, however Fabien indicated
that it shouldn't be fixed there (see below pull request).
Before recently, a simple work around would be in php.ini to set:
register_argc_argv = On
However with recent changes, this seems to no longer work.
Original pull request: https://github.com/symfony/symfony/pull/7354
See ticket https://github.com/symfony/symfony/issues/7196
```
| Q | A
| ------------- | ---
| Bug fix? | yes
| New feature? | no
| BC breaks? | no
| Deprecations? | no
| Tests pass? | yes
| Fixed tickets | 7196
| License | MIT
| Doc PR | none
```
Commits
-------
2c6af95 [Process] fix issue where $_ENV contains array vals
There are cases where $env or $_ENV can contain a value that is an array
This will cause Process to throw an Array to String conversion exception
Initially I submitted a patch of Process.php, however Fabien indicated
that it shouldn't be fixed there (see below pull request).
Before recently, a simple work around would be in php.ini to set:
register_argc_argv = On
However with recent changes, this seems to no longer work.
Original pull request: https://github.com/symfony/symfony/pull/7354
See ticket https://github.com/symfony/symfony/issues/7196
This PR was merged into the 2.2 branch.
Discussion
----------
[DomCrawler] Fix handling file:// without a host
| Q | A
| ------------- | ---
| Bug fix? | yes
| New feature? | no
| BC breaks? | no
| Deprecations? | no
| Tests pass? | yes
| Fixed tickets | n/a
| License | MIT
| Doc PR | n/a
Commits
-------
4139936 [DomCrawler] Fix handling file:// without a host
This PR was merged into the 2.2 branch.
Discussion
----------
[Finder] Fix SplFileInfo::getContents isn't working with ssh2 protocol
| Q | A
| -------------:| ---
| Bug fix? | yes
| New feature? | no
| BC breaks? | no
| Deprecations? | no
| Tests pass? | yes
| Fixed tickets | #8219
| License | MIT
Commits
-------
849f3ed [Finder] Fix SplFileInfo::getContents isn't working with ssh2 protocol
This PR was merged into the 2.2 branch.
Discussion
----------
[Form] corrected interface bind() method defined against in deprecation ...
...notice
The 'bind' method is defined against `FormInterface` not `FormConfigInterface`. This corrects the deprecation notice in the `Form` implementation.
Commits
-------
de289d2 [Form] corrected interface bind() method defined against in deprecation notice
* 2.1:
Revert "[Console] ensure exit code between 0-254"
[Console] ensure exit code between 0-254
[Console] fix status code when Exception::getCode returns something like 0.1
Fixed exit code for exceptions with error code 0
This PR was merged into the 2.1 branch.
Discussion
----------
[Console] fix status and exit code
Fix https://github.com/symfony/symfony/pull/8183#discussion_r4525267
and
http://www.php.net/manual/en/function.exit.php
> Exit statuses should be in the range 0 to 254, the exit status 255 is reserved by PHP and shall not be used. The status 0 is used to terminate the program successfully.
Commits
-------
6b9180a [Console] ensure exit code between 0-254
445b2e3 [Console] fix status code when Exception::getCode returns something like 0.1
This PR was merged into the 2.2 branch.
Discussion
----------
[DomCrawler] Fixed a fatal error when setting a value in a malformed field name
| Q | A
| ------------- | ---
| Bug fix? | yes
| New feature? | no
| BC breaks? | no
| Deprecations? | no
| Tests pass? | yes
| Fixed tickets |
| License | MIT
| Doc PR |
Hi,
I found a case where a fatal error happen when trying to set a value in a form field with a malformed name.
```
Fatal error: Call to a member function setValue() on a non-object in /home/pierreyves/projects/symfony2/symfony/src/Symfony/Component/DomCrawler/FormFieldRegistry.php on line 128
Call Stack:
0.0001 231832 1. {main}() /home/pierreyves/projects/symfony2/symfony/vendor/phpunit/phpunit/composer/bin/phpunit:0
0.0035 688768 2. PHPUnit_TextUI_Command::main() /home/pierreyves/projects/symfony2/symfony/vendor/phpunit/phpunit/composer/bin/phpunit:63
0.0035 689000 3. PHPUnit_TextUI_Command->run() /home/pierreyves/projects/symfony2/symfony/vendor/phpunit/phpunit/PHPUnit/TextUI/Command.php:129
0.0224 2705448 4. PHPUnit_TextUI_TestRunner->doRun() /home/pierreyves/projects/symfony2/symfony/vendor/phpunit/phpunit/PHPUnit/TextUI/Command.php:176
0.0301 2997392 5. PHPUnit_Framework_TestSuite->run() /home/pierreyves/projects/symfony2/symfony/vendor/phpunit/phpunit/PHPUnit/TextUI/TestRunner.php:349
0.0477 3613296 6. PHPUnit_Framework_TestSuite->runTest() /home/pierreyves/projects/symfony2/symfony/vendor/phpunit/phpunit/PHPUnit/Framework/TestSuite.php:745
0.0477 3613296 7. PHPUnit_Framework_TestCase->run() /home/pierreyves/projects/symfony2/symfony/vendor/phpunit/phpunit/PHPUnit/Framework/TestSuite.php:775
0.0477 3613296 8. PHPUnit_Framework_TestResult->run() /home/pierreyves/projects/symfony2/symfony/vendor/phpunit/phpunit/PHPUnit/Framework/TestCase.php:776
0.0478 3614208 9. PHPUnit_Framework_TestCase->runBare() /home/pierreyves/projects/symfony2/symfony/vendor/phpunit/phpunit/PHPUnit/Framework/TestResult.php:648
0.0478 3630992 10. PHPUnit_Framework_TestCase->runTest() /home/pierreyves/projects/symfony2/symfony/vendor/phpunit/phpunit/PHPUnit/Framework/TestCase.php:831
0.0478 3631856 11. ReflectionMethod->invokeArgs() /home/pierreyves/projects/symfony2/symfony/vendor/phpunit/phpunit/PHPUnit/Framework/TestCase.php:976
0.0478 3631888 12. Symfony\Component\DomCrawler\Tests\FormTest->testSetValueOnMultiValuedFieldsWithMalformedName() /home/pierreyves/projects/symfony2/symfony/vendor/phpunit/phpunit/PHPUnit/Framework/TestCase.php:976
0.0481 3635560 13. Symfony\Component\DomCrawler\Form->offsetSet() /home/pierreyves/projects/symfony2/symfony/vendor/phpunit/phpunit/PHPUnit/Framework/TestCase.php:255
0.0481 3635560 14. Symfony\Component\DomCrawler\FormFieldRegistry->set() /home/pierreyves/projects/symfony2/symfony/src/Symfony/Component/DomCrawler/Form.php:320
```
In this case, `FormFieldRegistry::getSegments('foo[bar')` method is called and it will return `array('foo')` only. Therefore the return of `FormFieldRegistry::get('foo[bar')` returns an array instead of a `FormField` and so the `setValue()` call happen on the array which leads to the fatal error.
I tried to fix that. I don't know if it's the best way to do this so, as always, comments are welcome.
Commits
-------
bce6bd2 [DomCrawler] Fixed a fatal error when setting a value in a malformed field name.
This PR was merged into the 2.2 branch.
Discussion
----------
[HttpKernel] instantiate valid commands only
| Q | A
| ------------- | ---
| Bug fix? | yes
| New feature? | debatable ..
| BC breaks? | no
| Deprecations? | no
| Tests pass? | yes
| License | MIT
This skips the default behavior to instantiate `Command` that cannot simply be instantiated. The respective commands have to be registered by other means.
Commits
-------
afad9c7 instantiate valid commands only
This PR was submitted for the 2.2 branch but it was merged into the 2.1 branch instead (closes#8183).
Discussion
----------
Fixed exit code for exceptions with error code 0
Covers https://github.com/symfony/symfony/issues/8180
Commits
-------
48e77f8 Fixed exit code for exceptions with error code 0
This PR was submitted for the master branch but it was merged into the 2.2 branch instead (closes#8169).
Discussion
----------
fix arab translation
fix arab translation
Commits
-------
e9051b3 fix arab translation
This PR was merged into the 2.2 branch.
Discussion
----------
[Finder] Fixed a path in a test
| Q | A
| ------------- | ---
| Bug fix? | yes
| New feature? | no
| BC breaks? | no
| Deprecations? | no
| Tests pass? | yes
| Fixed tickets | -
| License | MIT
| Doc PR | -
Test case was introduced in 45b68e02bd.
It's probably better to be explicit rather than to rely on a path position in the array. Position in 2.1 was different than in the other branches.
Commits
-------
127f3bd [Finder] Fixed a path in a test.
* 2.1:
Fix several instances of doubled words
[Finder] Fix iteration fails with non-rewindable streams
[Finder] Fix unexpected duplicate sub path related AppendIterator issue
Added type of return value in VoterInterface.
Fixed two bugs in HttpCache
Conflicts:
src/Symfony/Component/Finder/Tests/FinderTest.php
This PR was merged into the 2.1 branch.
Discussion
----------
Fix several instances of doubled words
| 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
One correction to an exception; the rest in docblocks.
Commits
-------
52fed7b Fix several instances of doubled words
This PR was squashed before being merged into the 2.1 branch (closes
Discussion
----------
[Finder] Fix iteration fails with non-rewindable streams
<table>
<tr>
<th>Q</th><th>A</th>
</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>#3585, #7834</td>
</tr>
<tr>
<td>License?</td><td>MIT</td>
</tr>
</table>
- [x] Add a good detection of non seekable stream
- [x] Add some unit tests
But the iteration under ftp stream still not work properly. Edit: need
tests for that.
Commits
-------
169c0b9 [Finder] Fix iteration fails with non-rewindable streams
This PR was squashed before being merged into the 2.1 branch (closes#8127).
Discussion
----------
[Finder] Fix unexpected duplicate sub path related AppendIterator issue
Bug fix: yes
New feature: no
BC breaks: no
Deprecations: no
Tests pass: yes
Fixes: https://github.com/symfony/symfony/pull/4993#issuecomment-8515845
Todo: -
License of the code: MIT
> @dg: I am afraid it is not working, see this example http://davidgrudl.com/tmp/appenditerator-finder.zip.
Commits
-------
45b68e0 [Finder] Fix unexpected duplicate sub path related AppendIterator issue
This PR was submitted for the master branch but it was merged into the 2.1 branch instead (closes#8117).
Discussion
----------
[Security] Added type of return value in VoterInterface.
| Q | A
| ------------- | ---
| Fixed tickets | none
| License | MIT
Simple addition of the return type for the `supportsClass` method, as per the `supportsAttribute` method doc in the interface.
Commits
-------
c176d1e [Security] Added type of return value in VoterInterface.
This PR was submitted for the 2.0 branch but it was merged into the 2.1 branch instead (closes#8098).
Discussion
----------
[HttpKernel] Fixed two bugs in HttpCache
| Q | A
| ------------- | ---
| Bug fix? | yes
| New feature? | no
| BC breaks? | no
| Deprecations? | no
| Tests pass? | yes
| Fixed tickets | #8097
| License | MIT
| Doc PR |
1. 304 responses always send "Content-Type: text/html; charset=UTF-8"
header
I discovered that the HttpCache::handle method calls Response::prepare
after calling Response::isModified. Response::isModified removes the
Content-Type header as it should, but Response::handle adds in the
default Content-Type header when none is set. If the default
Content-Type is not the correct Content-Type, then the Content-Type in
the cache gets clobered. I solved this problem by moving the
Response::isModified call after the Response::prepare call. I updated
the testRespondsWith304WhenIfModifiedSinceMatchesLastModified and
testRespondsWith304WhenIfNoneMatchMatchesETag tests to verify that the
Content-Type header was not being sent for 304 responses.
2. Failure to invalidate cached entities referred to by the Location
header
I discovered that the Store::invalidate method was looking for Location
and Content-Location headers to invalidate, but it was looking in the
request headers instead of the response headers. Because the
Store::invalidate method doesn't take a response, I decided it was
better to move this logic to the HttpCache::invalidate method instead.
I updated the testInvalidatesCachedResponsesOnPost test to verify that
Location headers are getting invalidated correctly.
Commits
-------
a4251bd [HttpKernel] Fixed two bugs in HttpCache
1. 304 responses always send "Content-Type: text/html; charset=UTF-8"
header
I discovered that the HttpCache::handle method calls Response::prepare
after calling Response::isModified. Response::isModified removes the
Content-Type header as it should, but Response::handle adds in the
default Content-Type header when none is set. If the default
Content-Type is not the correct Content-Type, then the Content-Type in
the cache gets clobered. I solved this problem by moving the
Response::isModified call after the Response::prepare call. I updated
the testRespondsWith304WhenIfModifiedSinceMatchesLastModified and
testRespondsWith304WhenIfNoneMatchMatchesETag tests to verify that the
Content-Type header was not being sent for 304 responses.
2. Failure to invalidate cached entities referred to by the Location
header
I discovered that the Store::invalidate method was looking for Location
and Content-Location headers to invalidate, but it was looking in the
request headers instead of the response headers. Because the
Store::invalidate method doesn't take a response, I decided it was
better to move this logic to the HttpCache::invalidate method instead.
I updated the testInvalidatesCachedResponsesOnPost test to verify that
Location headers are getting invalidated correctly.