@recaptime-dev's working patches + fork for Phorge, a community fork of Phabricator. (Upstream dev and stable branches are at upstream/main and upstream/stable respectively.) hq.recaptime.dev/wiki/Phorge
phorge phabricator
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

Add a setup warning for "always_populate_raw_post_data"

Summary:
Fixes T9235. When the stars align, PHP 5.6 or newer emits a deprecation warning on startup about "always_populate_raw_post_data" which occurs too early for us to intercept and can break responses by adding garbage to the output.

These settings appear to be sufficient:

```
always_populate_raw_post_data = 1
display_errors = 1
display_startup_errors = 1
error_reporting = -1
```

Then make a request with an unusual content type:

```
$ curl -X POST -H "Content-Type: application/json" -d "{foo: bar}" http://phabricator.example.com/
```

This triggers the warning:

```
<br />
<b>Deprecated</b>: Automatically populating $HTTP_RAW_POST_DATA is deprecated and will be removed in a future version. To avoid this warning set 'always_populate_raw_post_data' to '-1' in php.ini and use the php://input stream instead. in <b>Unknown</b> on line <b>0</b><br />
<br />
...
```

To avoid this, just instruct administrators to set this value to "-1", which completely disables the feature and silences the warning.

Test Plan:
- Reproduced this issue by following the instructions above.
- Triggered the setup issue locally and read all the captivating prose:

{F1786911}

- Made the configuration change it directed me to, saw the setup issue resolve.

Reviewers: jcox

Reviewed By: jcox

Maniphest Tasks: T9235

Differential Revision: https://secure.phabricator.com/D16454

+21
+21
src/applications/config/check/PhabricatorPHPConfigSetupCheck.php
··· 224 224 ->setSummary($summary) 225 225 ->setMessage($message); 226 226 } 227 + 228 + $raw_post_data = (int)ini_get('always_populate_raw_post_data'); 229 + if ($raw_post_data != -1) { 230 + $summary = pht( 231 + 'PHP setting "%s" should be set to "-1" to avoid deprecation '. 232 + 'warnings.', 233 + 'always_populate_raw_post_data'); 234 + 235 + $message = pht( 236 + 'The "%s" key is set to some value other than "-1" in your PHP '. 237 + 'configuration. This can cause PHP to raise deprecation warnings '. 238 + 'during process startup. Set this option to "-1" to prevent these '. 239 + 'warnings from appearing.', 240 + 'always_populate_raw_post_data'); 241 + 242 + $this->newIssue('php.always_populate_raw_post_data') 243 + ->setName(pht('Disable PHP %s', 'always_populate_raw_post_data')) 244 + ->setSummary($summary) 245 + ->setMessage($message) 246 + ->addPHPConfig('always_populate_raw_post_data'); 247 + } 227 248 } 228 249 }