Visa phpinfo() som en del av en annan sida

För att visa information om sin webbservers php-installation så är kommandot phpinfo() användbart. I sin enklaste form så skapar man en sida, till exempel info.php med innehållet

<?php
    phpinfo();
?>

Öppna sedan sidan i din webbläsare och den visar information om din php-installation. Funktionen phpinfo() genererar en komplett html-sida.

Om man av vill visa informationen från phpinfo() som en del av en annan sida så resulterar ovanstående kommando i en brusten layout eftersom funktionen lägger till nya <html>– och <body>-taggar och stylar om sidan.

En lösning på detta beskrivs i bloggposten Displaying phpinfo() without CSS styles. Lösningen består i att bara visa den kod som genereras mellan <body></body>-taggarna i exemplet ovan. Det går till så att man buffrar utmatningen från phpinfo(), lägger denna i en variabel, tar bort all kod som inte ligger mellan <body></body> och skriver ut resten. Detta görs med hjälp av följande kod:

    ob_start();
    phpinfo();
    $pinfo = ob_get_contents();
    ob_end_clean();
     
    $pinfo = preg_replace( '%^.*<body>(.*)</body>.*$%ms','$1',$pinfo);
    echo $pinfo;

Genom att omge utmatningen med en <div id=#phpinfo></div> så kan utmatningen stylas med med följande css:

#phpinfo {}
#phpinfo pre {}
#phpinfo a:link {}
#phpinfo a:hover {}
#phpinfo table {}
#phpinfo .center {}
#phpinfo .center table {}
#phpinfo .center th {}
#phpinfo td, th {}
#phpinfo h1 {}
#phpinfo h2 {}
#phpinfo .p {}
#phpinfo .e {}
#phpinfo .h {}
#phpinfo .v {}
#phpinfo .vr {}
#phpinfo img {}
#phpinfo hr {}

Ett komplett exempel blir

<style type="text/css">
    #phpinfo {}
    #phpinfo pre {}
    #phpinfo a:link {}
    #phpinfo a:hover {}
    #phpinfo table {}
    #phpinfo .center {}
    #phpinfo .center table {}
    #phpinfo .center th {}
    #phpinfo td, th {}
    #phpinfo h1 {}
    #phpinfo h2 {}
    #phpinfo .p {}
    #phpinfo .e {}
    #phpinfo .h {}
    #phpinfo .v {}
    #phpinfo .vr {}
    #phpinfo img {}
    #phpinfo hr {}
</style>

<div id="phpinfo">
    <?php
        ob_start();
        phpinfo();
        $pinfo = ob_get_contents();
        ob_end_clean();
     
       $pinfo = preg_replace( '%^.*<body>(.*)</body>.*$%ms','$1',$pinfo);
        echo $pinfo;
    ?>
</div>

Flera av värderna i den resulterande tabellen består av långa textsträngar. Om man inte vill att detta skall bryta med layouten på sidan så kan man använda css-egenskapen table-layout:fixed tillsammans med word-wrap:break-word enligt nedanstående exempel:

#phpinfo table {table-layout:fixed; width:auto;}
#phpinfo td, th {word-wrap:break-word;}

Kommentera

Fyll i dina uppgifter nedan eller klicka på en ikon för att logga in:

WordPress.com Logo

Du kommenterar med ditt WordPress.com-konto. Logga ut / Ändra )

Twitter-bild

Du kommenterar med ditt Twitter-konto. Logga ut / Ändra )

Facebook-foto

Du kommenterar med ditt Facebook-konto. Logga ut / Ändra )

Google+ photo

Du kommenterar med ditt Google+-konto. Logga ut / Ändra )

Ansluter till %s