11
votes

Existe-t-il un moyen de forcer phpinfo () à sortir ses affaires sans formatage. Juste comme en mode CLI?

Mais bien sûr en mode normal, pas CLI. La sortie formée incluse entre autres HTML détruit la mise en page Web existante.


1 commentaires

Vérifiez les commentaires sur PHP.NET/PHPINFO . Il y a quelques solutions à vos problèmes là-bas.


4 Réponses :


2
votes

Il existe de bons exemples de convertir les informations en une matrice sur le site PHP.NET.

Voici le meilleur exemple . Vous pouvez faire boucle à travers ce tableau pour l'afficher de toutes les directions.


0 commentaires

4
votes

Ce fonction fait un excellent travail à convertir phpinfo en une matrice.

function parse_phpinfo() {
    ob_start(); phpinfo(INFO_MODULES); $s = ob_get_contents(); ob_end_clean();
    $s = strip_tags($s, '<h2><th><td>');
    $s = preg_replace('/<th[^>]*>([^<]+)<\/th>/', '<info>\1</info>', $s);
    $s = preg_replace('/<td[^>]*>([^<]+)<\/td>/', '<info>\1</info>', $s);
    $t = preg_split('/(<h2[^>]*>[^<]+<\/h2>)/', $s, -1, PREG_SPLIT_DELIM_CAPTURE);
    $r = array(); $count = count($t);
    $p1 = '<info>([^<]+)<\/info>';
    $p2 = '/'.$p1.'\s*'.$p1.'\s*'.$p1.'/';
    $p3 = '/'.$p1.'\s*'.$p1.'/';
    for ($i = 1; $i < $count; $i++) {
        if (preg_match('/<h2[^>]*>([^<]+)<\/h2>/', $t[$i], $matchs)) {
            $name = trim($matchs[1]);
            $vals = explode("\n", $t[$i + 1]);
            foreach ($vals AS $val) {
                if (preg_match($p2, $val, $matchs)) { // 3cols
                    $r[$name][trim($matchs[1])] = array(trim($matchs[2]), trim($matchs[3]));
                } elseif (preg_match($p3, $val, $matchs)) { // 2cols
                    $r[$name][trim($matchs[1])] = trim($matchs[2]);
                }
            }
        }
    }
    return $r;
}


0 commentaires

3
votes

Je viens de me faire créer la création du bibliothèque de compositeur pour ce but même. En ce moment, il peut analyser la sortie phpinfo () lorsqu'il est invoqué à partir de la ligne de commande, qui était mon cas d'utilisation.

au lieu d'utiliser strip_tags () ou n'importe quelle astuce intelligente, je viens de travailler mon chemin en arrière de tout ce que le Fonction d'origine a fait.

Vous pouvez utiliser la bibliothèque comme suit: xxx

Vous pouvez accéder aux touches dans les modules et ailleurs: xxx

ou < / p> xxx


0 commentaires

0
votes

Si votre hôte vous permet d'utiliser exec () code>, vous pouvez le sortir de la même manière que sur CLI comme celui-ci:

<?php
exec('php -i', $data);
var_dump($data);


0 commentaires