code.fastix.org

Dateiansicht:

Datei:Projekte -> PHP:Replacement für phpinfo() -> phpinfo.php
md5:e2f3eeac250342d0bb4b3a95232e0281
sha1:03855bd9dd562f6a3b7330d5a0a4cb5a80bb4db8
Download-Link:Download
  1. <?php
  2. header('Cache-Control: no-cache, no store');
  3. if ( isset ( $_COOKIE[ini_get('session.name')] ) ) {
  4.         session_start();
  5. }
  6.  
  7. $apache = false;
  8. foreach ( [
  9.         '/usr/sbin/apache2',
  10.         '/usr/sbin/apache',
  11.         '/usr/sbin/httpd',
  12.         '/usr/sbin/httpd2'
  13. ] as $t ) {
  14.         if ( is_file( $t ) ) {
  15.                         $apache = $t;
  16.                         unset( $t );
  17.                         break;
  18.         }
  19. }
  20.  
  21. if ( $apache && is_file('/etc/apache2/envvars' ) ) {
  22.         $apache = ". /etc/apache2/envvars; $apache";
  23. }
  24.  
  25. ?><!DOCTYPE HTML>
  26. <html lang="de">
  27. <head>
  28. <meta charset="utf-8">
  29. <link rel="Shortcut Icon" href="/favicon.ico" />
  30. <link rel="Stylesheet" href="/phpinfo.css" />
  31. <meta name="robots" content="noindex,noarchive,nosnippet,noodp,notranslate,noimageindex">
  32. <title><?=$_SERVER['SERVER_NAME']; ?>: PHP-Informationen</title>
  33.  
  34. <body>
  35. <h1>🛠 <?=$_SERVER['SERVER_NAME']; ?>: PHP-Informationen<br><span class='subline'><a href="https://code.fastix.org/Projekte/PHP:Replacement%20f%c3%bcr%20phpinfo()/">Tool von Jörg Reinholz</a>, <a href='https://www.fastix.org/'>fastix WebDesign &amp; Consult, Kassel</a>.</span></h1>
  36. <?php if ( isset( $_GET['show_ini_only'] ) && 'true' == $_GET['show_ini_only'] ) { ?>
  37. <h4 id="INI"><a class="toplink" href="?">⮉</a>Ini-Einstellungen</h4>
  38. <table class="showhover">
  39.         <tbody>
  40. <?php
  41.         iniShow();
  42. ?>
  43.  
  44.         </tbody>
  45. </table><?php
  46.         echo '<h4><a class="toplink" href="#">⮉ </a>(nach oben)</h4>';
  47.         echo "</body>\n</html>\n";
  48.         exit;
  49. } elseif ( isset( $_GET['show_constants_only'] ) && 'true' == $_GET['show_constants_only'] ) {
  50.         echo '<h4><a class="toplink" href="?">⮉</a>Konstanten:</h4>'."\n";
  51.         PrintHash( get_defined_constants( true ) );
  52.         echo '<h4><a class="toplink" href="#">⮉ </a>(nach oben)</h4>';
  53.         echo "</body>\n</html>\n";
  54.         exit;
  55. } elseif ( isset( $_GET['show_linuxlocales_only'] ) && 'true' == $_GET['show_linuxlocales_only'] ) {
  56.         echo '<h4><a class="toplink" href="?">⮉</a>Alle installierten Linux-Locales:</h4>'."\n";
  57.         if ( is_file( '/usr/bin/locale' ) ) {
  58.                 PrintHash ( ( new linuxLocales) -> getLocales(), true );
  59.         } else {
  60.                 echo "<p>Fehler: Dies scheint kein Linux zu sein.</p>";
  61.         }
  62.         echo '<h4><a class="toplink" href="#">⮉ </a>(nach oben)</h4>';
  63.         echo "</body>\n</html>\n";
  64.         exit;
  65. } elseif ( isset( $_GET['show_apache_only'] ) && 'true' == $_GET['show_apache_only'] ) {
  66.         echo '<h4><a class="toplink" href="?">⮉</a>Apache-Version:</h4>'."\n";
  67.         echo '<p>' . str_replace( "\n", "<br>", `$apache -v` ) . '</p>';
  68.         echo '<h4><a class="toplink" href="?">⮉</a>Apache-Module:</h4>'."\n";
  69.         echo '<p>' . str_replace( "\n",', ', trim (`ls /etc/apache2/mods-enabled | grep -v '.conf' | sed -e "s/\.load//"` ) ) . '</p>';
  70.         echo '<h4><a class="toplink" href="#">⮉ </a>(nach oben)</h4>';
  71.         echo "</body>\n</html>\n";
  72.         exit;
  73. }
  74. ?>
  75. <nav><a href="#_SERVER">$_SERVER</a>
  76. <?php if ( isset( $_ENV ) and array_keys( $_ENV ) ) { ?>
  77.  | <a href="#_ENV">$_ENV</a>
  78. <?php } ?>
  79.  | <a href="#_GET">$_GET</a>
  80.  | <a href="#_POST">$_POST</a>
  81.  | <a href="#_COOKIE">$_COOKIE</a>
  82.  | <a href="#_SESSION">$_SESSION</a>
  83.  | <a href="#_REQUEST">$_REQUEST</a>
  84.  | <a href="#_FILES">$_FILES</a>
  85.  | <a href="#GLOBALS">$GLOBALS</a>
  86.  </nav><nav><a href="<?=$_SERVER['PHP_SELF'];?>?show_ini_only=true">(Nur) Ini-Settings</a>
  87.  | <a href="<?=$_SERVER['PHP_SELF'];?>?show_constants_only=true">(Nur) Konstanten</a>
  88.  <?php if ( is_file( '/usr/bin/locale' ) ) { ?>
  89.  | <a href="?show_linuxlocales_only=true">(Nur) Linux-locales</a>
  90.  <?php
  91.  }
  92. if ( $apache ) {
  93. ?>
  94. | <a href="?show_apache_only=true">Apache-Informationen</a>
  95. <?php } ?>
  96. </nav>
  97. <h4><a class="toplink" href="#">⮉</a>PHP-Version, SAPI und Module:</h4>
  98. <?php
  99. $pattern='/[0-9]+\.[0-9]+/';
  100. preg_match ( $pattern , phpversion(), $matches );
  101. ?>
  102. <p>PHP <?=$matches[0]; ?> läuft als <?=php_sapi_name(); ?></p>
  103. <?php unset( $pattern, $matches ); ?>
  104. <p>Geladene PHP-Erweiterungen: <?=implode(", ", get_loaded_extensions());?></p>
  105.  
  106. <?php showVars (); ?>
  107.  
  108. <h4><a class="toplink" href="#">⮉ </a>(nach oben)</h4>
  109. </body>
  110. </html><?php
  111.  
  112.  
  113. function return_bytes( $val ) {
  114.    $val = trim( $val );
  115.    $last = strtolower( $val[strlen( $val )-1] );
  116.    switch( $last ) {
  117.        // The 'G' modifier is available since PHP 5.1.0
  118.        case 'g':
  119.            $val *= 1024*1024*1024;
  120.        case 'm':
  121.            $val *= 1024*1024;
  122.        case 'k':
  123.            $val *= 1024;
  124.    }
  125.    return $val;
  126. }
  127.  
  128. function Printline ( $key, $val ) {
  129.         echo "\n" . "   <tr>\n          <td>" . htmlentities($key) . "</td>\n           <td>";
  130.         if ( is_array( $val ) ) {
  131.                 PrintHash ( $val, true );
  132.         } else {
  133.                 echo htmlentities( $val );
  134.         }
  135.         echo "</td>\n   </tr>";
  136. }
  137.  
  138. function PrintHash ( $ar, $showhover=false ) {
  139.         if ( isset($ar) && is_array( $ar ) && count( $ar ) ) {
  140.                 if ( $showhover ) {
  141.                         $class=" class='showhover'";
  142.                 } else {
  143.                         $class="";
  144.                 }
  145.                 echo '<table' . $class .  ">\n<thead>\n<tr><th>Schl&uuml;ssel</th><th>Wert</th></tr>\n</thead>\n<tbody>";
  146.                 foreach ( $ar as $key => $val ) {
  147.                         if ( 'GLOBALS' != $key ) {
  148.                                 Printline ( $key, $val );
  149.                         }
  150.                 }
  151.  
  152.                 echo "\n</tbody>\n</table>\n";
  153.         } else {
  154.                         echo "(leer)";
  155.         }
  156. }
  157.  
  158. class linuxLocales {
  159.         private $all;
  160.         function __construct () {
  161.                 if (! is_file( '/usr/bin/locale' ) ) {
  162.                                 return false;
  163.                 }
  164.                 $rows = explode( "\n", `/usr/bin/locale -a` );
  165.                 foreach ( $rows as $row ) {
  166.                         if ( $row = trim( $row ) ) {
  167.                                 $this -> all[] = $row;
  168.                         }
  169.                 }
  170.         }
  171.         function getLocales( $grep='' ) {
  172.                 if ( $grep ) {
  173.                         $pattern = '/^' .  $grep . '.*$/';
  174.                         $ar =  preg_grep( $pattern,  $this -> all );
  175.                         return $ar;
  176.                 } else {
  177.                         return $this -> all;
  178.                 }
  179.         }
  180. }
  181.  
  182. function iniShow () {
  183.         $arIni = ini_get_all();
  184.         foreach ( array_keys ( $arIni ) as $key ) {
  185.                 if ('' !==  $arIni[$key]['global_value']  && '' !== $arIni[$key]['local_value'] ) {
  186.                         echo '
  187.                         <tr>
  188.                                 <td><strong>'               . htmlentities( $key )                         . '</strong></td>';
  189.  
  190.                         if ( $arIni[$key]['global_value'] == $arIni[$key]['local_value'] )  {
  191.                                 echo '
  192.                                 <td>' . htmlentities( str_replace(',',', ', $arIni[$key]['global_value'] ) ) . '</td>';
  193.                         } else {
  194.                                         echo '
  195.                                 <td><strong>local_value:</strong> '  . htmlentities( str_replace(',', ', ', $arIni[$key]['local_value']  ) ) . '</strong><br>
  196.                                 global_value: ' . htmlentities( str_replace(',', ', ', $arIni[$key]['local_value']  ) ) . '</td>';
  197.                         }
  198.                 }
  199.         }
  200. }
  201.  
  202. function showVars () {
  203.         $ar = ['_GET', '_POST', '_COOKIE', '_SESSION', '_REQUEST', '_FILES', '_SERVER', 'GLOBALS' ];
  204.         if ( isset( $_ENV ) && array_keys( $_ENV ) ) {
  205.                 $new = count( $ar );
  206.                 $ar[$new] = $ar[ $new - 1 ];
  207.                 $ar[ $new - 1 ] = '_ENV';
  208.         }
  209.         foreach ( $ar as $varname ) {
  210.                 echo '<h4 id="' . $varname . '"><a class="toplink" href="#">⮉</a>Globale Variable &quot;$' . $varname . '&quot;:</h4>'."\n";
  211.                
  212.                 if ( '_GET' == $varname ) {
  213.                         echo '<h5>HTTP_QUERY_STRING:</h5>';
  214.                         if ( $data = $_SERVER['QUERY_STRING'] ) {
  215.                                 echo '<pre>' . htmlspecialchars( $data ) . '</pre>';
  216.                         } else {
  217.                                 echo '<div>(leer)</div>';
  218.                         }
  219.                         echo '<h5>Generiertes $_GET:</h5>';
  220.                 }              
  221.                
  222.                 if ( '_POST' == $varname ) {
  223.                         echo '<h5>php://input</h5>';
  224.                         if ( $data = file_get_contents( 'php://input' ) ) {
  225.                                 echo '<pre>' . htmlspecialchars( $data ) . '</pre>';
  226.                         } else {
  227.                                 echo '<div>(leer)</div>';
  228.                         }
  229.                         echo '<h5>Generiertes $_POST:</h5>';
  230.                 }
  231.                 @eval( 'PrintHash( $' . $varname . ', ( $varname !== "GLOBALS" ) );');
  232.         }
  233. }
  234.