Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
35 changes: 34 additions & 1 deletion ChromePhp.php
Original file line number Diff line number Diff line change
Expand Up @@ -78,6 +78,11 @@ class ChromePhp
*/
const TABLE = 'table';

/**
* @var int
*/
const HTTPD_HEADER_LIMIT = 8192; // 8Kb - Default for most HTTPD Servers

/**
* @var int
*/
Expand Down Expand Up @@ -377,7 +382,35 @@ protected function _addRow(array $logs, $backtrace, $type)

protected function _writeHeader($data)
{
header(self::HEADER_NAME . ': ' . $this->_encode($data));
$header = self::HEADER_NAME . ': ' . $this->_encode($data);
// Most HTTPD servers have a default header line length limit of 8kb, must test to avoid 500 Internal Server Error.
if (strlen($header) > self::HTTPD_HEADER_LIMIT) {
$data['rows'] = [];
$data['rows'][] = [
[
'ChromePHP Error: The HTML header will surpass the limit of ' .
$this->_formatSize(self::HTTPD_HEADER_LIMIT) . ' (' . $this->_formatSize(strlen($header)) .
') - You can increase the HTTPD_HEADER_LIMIT on ChromePHP class, according to your Apache ' .
'LimitRequestFieldsize directive'
], '', self::ERROR
];
$header = self::HEADER_NAME . ': ' . $this->_encode($data);
}
header($header);
}

protected function _formatSize($arg) {
Copy link
Collaborator

@peter279k peter279k May 15, 2019

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It looks like this method coding style is not same as other methods.

To be consistency, I think we should fix/organize coding style and I suggest we can follow the PSR-2 coding style :).

And the PHP_CodeSniffer is one of coding style check tool we can consider.

if ($arg > 0) {
$j = 0;
$ext = ["bytes","Kb","Mb","Gb","Tb"];
while ($arg >= pow(1024, $j)) ++$j; {
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I don't think the while loop usage syntax is good.

We should make this while syntax be readable if possible.

$arg = (round($arg / pow(1024, $j - 1) * 100) / 100).($ext[$j - 1]);
}

return $arg;
}

return "0Kb";
}

/**
Expand Down