* @package WoltLabSuite\Core\Acp\Page */ class PHPInfoPage extends AbstractPage { /** * @inheritDoc */ public $templateName = 'phpInfo'; /** * @inheritDoc */ public $neededPermissions = ['admin.configuration.package.canInstallPackage', 'admin.configuration.package.canUpdatePackage']; /** * @inheritDoc */ public function assignVariables() { parent::assignVariables(); // get phpinfo() output ob_start(); phpinfo(); $info = ob_get_contents(); ob_end_clean(); // parse output $info = preg_replace('%^.*(.*).*$%s', '$1', $info); // style fixes // remove first table $info = preg_replace('%(
)?%s', '', $info, 1); // float logos $info = preg_replace('%]*)>%s', '', $info, 1); // fix tables $info = preg_replace('%

(.*?)

\s*%', '

\\1

', $info); $info = preg_replace('%%', '
', $info); $info = preg_replace('%', $info); $info = str_replace('
(\w+ )<\/td><\/tr>%', '
\\1
', '
', $info); // fix display of disable_functions & disable_classes $info = preg_replace_callback('%disable_(?Pfunctions|classes)(?P.*?)(?P.*?)%s', function ($match) { $ret = 'disable_' . $match['t'] . ''; $ret .= '' . str_replace(' ', ', ', rtrim(wordwrap(str_replace(',', ' ', $match['l'])))) . ''; $ret .= '' . str_replace(' ', ', ', rtrim(wordwrap(str_replace(',', ' ', $match['m'])))) . ''; return $ret; }, $info); WCF::getTPL()->assign([ 'phpInfo' => $info ]); } }