code.fastix.org

Dateiansicht:

Datei:Projekte -> PHP:Replacement für phpinfo() -> phpinfo.php
md5:5b25e823b730363e8852a4bfd99f777c
sha1:a039b0d21f673551dfc99fb63005d2927ebe858b
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. <meta name="robots" content="noindex,noarchive,nosnippet,noodp,notranslate,noimageindex">
  31. <title><?=$_SERVER['SERVER_NAME']; ?>: PHP-Informationen</title>
  32. <style>
  33. body, html {
  34.         margin:0;
  35.         padding:0;
  36. }
  37.  
  38. body {
  39.         margin-right: 2rem;
  40.         margin-left: 2rem;
  41.         margin-bottom:4rem;
  42. }
  43.  
  44.  
  45. h1 {
  46.         color:#000;
  47.         background-color: #ffb300;;
  48.         font-size: 2rem;
  49.         padding: .7em 2rem .5rem 2rem;
  50.         margin-top: 0;
  51.         margin-right: -2rem;
  52.         margin-left: -2rem;
  53. }
  54.  
  55. .subline {
  56.         font-size: .4em;
  57.         font-family: sans-serif;
  58. }
  59.  
  60. h1 a:link, h1 a:visited, h1 a:hover, h1 a:focus, h1 a:active {
  61.         color:#000;
  62.         font-family: sans-serif;
  63. }
  64.  
  65. h4 {
  66.         color:#000;
  67.         background-color:#fff0cc;
  68.         padding:.5em;
  69.         padding-left:3rem;
  70.         margin-right:-2em;
  71.         margin-left:-2em;
  72. }
  73.  
  74. th {
  75.         text-align:left;
  76.         padding:.3em 1em .3em 1em;
  77.         color:#000;
  78.         background-color:#fff0cc;
  79. }
  80.  
  81. td, p, nav {
  82.         vertical-align:top;
  83.         padding:.3em 1em .3em 1em;
  84.         color:#000;
  85.         background-color:#eee;
  86. }
  87.  
  88. nav {
  89.         font-weight: 900:
  90. }
  91.  
  92. table {
  93.         /*max-width:100%;*/
  94. }
  95.  
  96. td table {
  97.         border:0;
  98. }
  99.  
  100. td table td {
  101.         border:0;
  102. }
  103.  
  104. table.showhover tr:hover td {
  105.         background-color:#ffe;
  106. }
  107.  
  108. p, td, th {
  109.         font-size:0.9em;
  110.         font-family: sans-serif;
  111. }
  112.  
  113. td:first-child,
  114. th:first-child {
  115.                 max-width:15%;
  116. }
  117.  
  118. a.toplink:link,
  119. a.toplink:visited,
  120. a.toplink:hover,
  121. a.toplink:focus,
  122. a.toplink:active
  123. {
  124.         display:inline-block;
  125.         position: relative;
  126.         left: -1rem;
  127.     border-radius: 4px;
  128.     text-decoration: none;
  129.     font-weight:bold;
  130.     font-size:160%;
  131. }
  132.  
  133. </style>
  134. </head>
  135. <body>
  136. <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>
  137. <?php if ( isset( $_GET['show_ini_only'] ) && 'true' == $_GET['show_ini_only'] ) { ?>
  138. <h4 id="INI"><a class="toplink" href="?">⮉</a>Ini-Einstellungen</h4>
  139. <table class="showhover">
  140.         <tbody>
  141. <?php
  142.         iniShow();
  143. ?>
  144.  
  145.         </tbody>
  146. </table><?php
  147.         echo '<h4><a class="toplink" href="#">⮉ </a>(nach oben)</h4>';
  148.         echo "</body>\n</html>\n";
  149.         exit;
  150. } elseif ( isset( $_GET['show_constants_only'] ) && 'true' == $_GET['show_constants_only'] ) {
  151.         echo '<h4><a class="toplink" href="?">⮉</a>Konstanten:</h4>'."\n";
  152.         PrintHash( get_defined_constants( true ) );
  153.         echo '<h4><a class="toplink" href="#">⮉ </a>(nach oben)</h4>';
  154.         echo "</body>\n</html>\n";
  155.         exit;
  156. } elseif ( isset( $_GET['show_linuxlocales_only'] ) && 'true' == $_GET['show_linuxlocales_only'] ) {
  157.         echo '<h4><a class="toplink" href="?">⮉</a>Alle installierten Linux-Locales:</h4>'."\n";
  158.         if ( is_file( '/usr/bin/locale' ) ) {
  159.                 PrintHash ( ( new linuxLocales) -> getLocales(), true );
  160.         } else {
  161.                 echo "<p>Fehler: Dies scheint kein Linux zu sein.</p>";
  162.         }
  163.         echo '<h4><a class="toplink" href="#">⮉ </a>(nach oben)</h4>';
  164.         echo "</body>\n</html>\n";
  165.         exit;
  166. } elseif ( isset( $_GET['show_apache_only'] ) && 'true' == $_GET['show_apache_only'] ) {
  167.         echo '<h4><a class="toplink" href="?">⮉</a>Apache-Version:</h4>'."\n";
  168.         echo '<p>' . str_replace( "\n", "<br>", `$apache -v` ) . '</p>';
  169.         echo '<h4><a class="toplink" href="?">⮉</a>Apache-Module:</h4>'."\n";
  170.         echo '<p>' . str_replace( "\n",', ', trim (`ls /etc/apache2/mods-enabled | grep -v '.conf' | sed -e "s/\.load//"` ) ) . '</p>';
  171.         echo '<h4><a class="toplink" href="#">⮉ </a>(nach oben)</h4>';
  172.         echo "</body>\n</html>\n";
  173.         exit;
  174. }
  175. ?>
  176. <nav><a href="#_SERVER">$_SERVER</a>
  177.  | <a href="#_ENV">$_ENV</a>
  178.  | <a href="#_GET">$_GET</a>
  179.  | <a href="#_POST">$_POST</a>
  180.  | <a href="#_COOKIE">$_COOKIE</a>
  181.  | <a href="#_SESSION">$_SESSION</a>
  182.  | <a href="#_REQUEST">$_REQUEST</a>
  183.  | <a href="#_FILES">$_FILES</a>
  184.  | <a href="#GLOBALS">$GLOBALS</a>
  185.  </nav><nav><a href="<?=$_SERVER['PHP_SELF'];?>?show_ini_only=true">(Nur) Ini-Settings</a>
  186.  | <a href="<?=$_SERVER['PHP_SELF'];?>?show_constants_only=true">(Nur) Konstanten</a>
  187.  <?php if ( is_file( '/usr/bin/locale' ) ) { ?>
  188.  | <a href="?show_linuxlocales_only=true">(Nur) Linux-locales</a>
  189.  <?php
  190.  }
  191. if ( $apache ) {
  192. ?>
  193. | <a href="?show_apache_only=true">Apache-Informationen</a>
  194. <?php } ?>
  195. </nav>
  196. <h4><a class="toplink" href="#">⮉</a>PHP-Version und SAPI:</h4>
  197. <?php
  198. $pattern='/[0-9]+\.[0-9]+/';
  199. preg_match ( $pattern , phpversion(), $matches );
  200. ?>
  201. <p>PHP <?=$matches[0]; ?> läuft als <?=php_sapi_name(); ?></p>
  202. <?php unset( $pattern, $matches ); ?>
  203.  
  204. <?php showVars (); ?>
  205.  
  206. <h4><a class="toplink" href="#">⮉ </a>(nach oben)</h4>
  207. </body>
  208. </html><?php
  209.  
  210.  
  211. function return_bytes( $val ) {
  212.    $val = trim( $val );
  213.    $last = strtolower( $val{strlen( $val )-1} );
  214.    switch( $last ) {
  215.        // The 'G' modifier is available since PHP 5.1.0
  216.        case 'g':
  217.            $val *= 1024*1024*1024;
  218.        case 'm':
  219.            $val *= 1024*1024;
  220.        case 'k':
  221.            $val *= 1024;
  222.    }
  223.    return $val;
  224. }
  225.  
  226. function Printline ( $key, $val ) {
  227.         echo "\n" . "   <tr>\n          <td>" . htmlentities($key) . "</td>\n           <td>";
  228.         if ( is_array( $val ) ) {
  229.                 PrintHash ( $val, true );
  230.         } else {
  231.                 echo htmlentities( $val );
  232.         }
  233.         echo "</td>\n   </tr>";
  234. }
  235.  
  236. function PrintHash ( $ar, $showhover=false ) {
  237.         if ( isset($ar) && is_array( $ar ) && count( $ar ) ) {
  238.                 if ( $showhover ) {
  239.                         $class=" class='showhover'";
  240.                 } else {
  241.                         $class="";
  242.                 }
  243.                 echo '<table' . $class .  ">\n<thead>\n<tr><th>Schl&uuml;ssel</th><th>Wert</th></tr>\n</thead>\n<tbody>";
  244.                 foreach ( $ar as $key => $val ) {
  245.                         if ( 'GLOBALS' != $key ) {
  246.                                 Printline ( $key, $val );
  247.                         }
  248.                 }
  249.  
  250.                 echo "\n</tbody>\n</table>\n";
  251.         } else {
  252.                         echo "(leer)";
  253.         }
  254. }
  255.  
  256. class linuxLocales {
  257.         private $all;
  258.         function __construct () {
  259.                 if (! is_file( '/usr/bin/locale' ) ) {
  260.                                 return false;
  261.                 }
  262.                 $rows = explode( "\n", `/usr/bin/locale -a` );
  263.                 foreach ( $rows as $row ) {
  264.                         if ( $row = trim( $row ) ) {
  265.                                 $this -> all[] = $row;
  266.                         }
  267.                 }
  268.         }
  269.         function getLocales( $grep='' ) {
  270.                 if ( $grep ) {
  271.                         $pattern = '/^' .  $grep . '.*$/';
  272.                         $ar =  preg_grep( $pattern,  $this -> all );
  273.                         return $ar;
  274.                 } else {
  275.                         return $this -> all;
  276.                 }
  277.         }
  278. }
  279.  
  280. function iniShow () {
  281.         $arIni = ini_get_all();
  282.         foreach ( array_keys ( $arIni ) as $key ) {
  283.                 if ('' !==  $arIni[$key]['global_value']  && '' !== $arIni[$key]['local_value'] ) {
  284.                         echo '
  285.                         <tr>
  286.                                 <td><strong>'               . htmlentities( $key )                         . '</strong></td>';
  287.  
  288.                         if ( $arIni[$key]['global_value'] == $arIni[$key]['local_value'] )  {
  289.                                 echo '
  290.                                 <td>' . htmlentities( str_replace(',',', ', $arIni[$key]['global_value'] ) ) . '</td>';
  291.                         } else {
  292.                                         echo '
  293.                                 <td><strong>local_value:</strong> '  . htmlentities( str_replace(',', ', ', $arIni[$key]['local_value']  ) ) . '</strong><br>
  294.                                 global_value: ' . htmlentities( str_replace(',', ', ', $arIni[$key]['local_value']  ) ) . '</td>';
  295.                         }
  296.                 }
  297.         }
  298. }
  299.  
  300. function showVars () {
  301.         foreach (['_GET', '_POST', '_COOKIE', '_SESSION', '_REQUEST', '_FILES', '_SERVER', '_ENV', 'GLOBALS' ] as $varname ) {
  302.                 echo '<h4 id="' . $varname . '"><a class="toplink" href="#">⮉</a>Globale Variable &quot;$' . $varname . '&quot;:</h4>'."\n";
  303.                 @eval( 'PrintHash( $' . $varname . ', ( $varname !== "GLOBALS" ) );');
  304.         }
  305. }