mirror of
https://we.phorge.it/source/phorge.git
synced 2024-11-22 23:02:42 +01:00
Detect obviously erroneous "memory_limit" configurations
Summary: See comment. ALSO: THIS DIFF IS AMAZING. Test Plan: Changed my memory limit to something absurd, got yelled at. Reviewed By: mroch Reviewers: colmdoyle, jungejason, aran, tuomaspelkonen, codeblock, tomo, mroch, hsb CC: aran, mroch, epriestley Differential Revision: 657
This commit is contained in:
parent
3771f63441
commit
d28326446d
1 changed files with 31 additions and 0 deletions
|
@ -19,6 +19,9 @@
|
|||
$__start__ = microtime(true);
|
||||
|
||||
error_reporting(E_ALL | E_STRICT);
|
||||
|
||||
phabricator_detect_insane_memory_limit();
|
||||
|
||||
ini_set('memory_limit', -1);
|
||||
|
||||
$env = getenv('PHABRICATOR_ENV'); // Apache
|
||||
|
@ -206,3 +209,31 @@ function phabricator_fatal_config_error($msg) {
|
|||
|
||||
die();
|
||||
}
|
||||
|
||||
function phabricator_detect_insane_memory_limit() {
|
||||
$memory_limit = ini_get('memory_limit');
|
||||
$char_limit = 12;
|
||||
if (strlen($memory_limit) <= $char_limit) {
|
||||
return;
|
||||
}
|
||||
|
||||
// colmdoyle ran into an issue on an Ubuntu box with Suhosin where his
|
||||
// 'memory_limit' was set to:
|
||||
//
|
||||
// 3232323232323232323232323232323232323232323232323232323232323232M
|
||||
//
|
||||
// Not a typo. A wizard did it.
|
||||
//
|
||||
// Anyway, with this 'memory_limit', the machine would immediately fatal
|
||||
// when executing the ini_set() later. I wasn't able to reproduce this on my
|
||||
// EC2 Ubuntu + Suhosin box, but verified that it caused the problem on his
|
||||
// machine and that setting it to a more sensible value fixed it. Since I
|
||||
// have no idea how to actually trigger the issue, we look for a coarse
|
||||
// approximation of it (a memory_limit setting more than 12 characters in
|
||||
// length).
|
||||
|
||||
phabricator_fatal_config_error(
|
||||
"Your PHP 'memory_limit' is set to something ridiculous ".
|
||||
"(\"{$memory_limit}\"). Set it to a more reasonable value (it must be no ".
|
||||
"more than {$char_limit} characters long).");
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue