phpinfo Will show you how your apache/php system is set up (DO NOT leave this info publicly available!)
e.g. setup a file called test.php
<?php
phpversion();
phpinfo();
?>
chown root:www-data test.php
chmod 550 test.php
When you browse to http://mysite.com/test.php
you'll notice nice variables like REMOTE_ADDR and REMOTE_USER
e.g.
$user=apache_getenv(REMOTE_USER)
echo $user;
A COMPLETE TABLE LISTING CAN BE MADE...
<?php
echo "<table border=\"1\">";
echo "<tr><td>" .$_SERVER['argv'] ."</td><td>argv</td></tr>";
echo "<tr><td>" .$_SERVER['argc'] ."</td><td>argc</td></tr>";
echo "<tr><td>" .$_SERVER['GATEWAY_INTERFACE'] ."</td><td>GATEWAY_INTERFACE</td></tr>";
echo "<tr><td>" .$_SERVER['SERVER_ADDR'] ."</td><td>SERVER_ADDR</td></tr>";
echo "<tr><td>" .$_SERVER['SERVER_NAME'] ."</td><td>SERVER_NAME</td></tr>";
echo "<tr><td>" .$_SERVER['SERVER_SOFTWARE'] ."</td><td>SERVER_SOFTWARE</td></tr>";
echo "<tr><td>" .$_SERVER['SERVER_PROTOCOL'] ."</td><td>SERVER_PROTOCOL</td></tr>";
echo "<tr><td>" .$_SERVER['REQUEST_METHOD'] ."</td><td>REQUEST_METHOD</td></tr>";
echo "<tr><td>" .$_SERVER['REQUEST_TIME'] ."</td><td>REQUEST_TIME</td></tr>";
echo "<tr><td>" .$_SERVER['QUERY_STRING'] ."</td><td>QUERY_STRING</td></tr>";
echo "<tr><td>" .$_SERVER['DOCUMENT_ROOT'] ."</td><td>DOCUMENT_ROOT</td></tr>";
echo "<tr><td>" .$_SERVER['HTTP_ACCEPT'] ."</td><td>HTTP_ACCEPT</td></tr>";
echo "<tr><td>" .$_SERVER['HTTP_ACCEPT_CHARSET'] ."</td><td>HTTP_ACCEPT_CHARSET</td></tr>";
echo "<tr><td>" .$_SERVER['HTTP_ACCEPT_ENCODING'] ."</td><td>HTTP_ACCEPT_ENCODING</td></tr>";
echo "<tr><td>" .$_SERVER['HTTP_ACCEPT_LANGUAGE'] ."</td><td>HTTP_ACCEPT_LANGUAGE</td></tr>";
echo "<tr><td>" .$_SERVER['HTTP_CONNECTION'] ."</td><td>HTTP_CONNECTION</td></tr>";
echo "<tr><td>" .$_SERVER['HTTP_HOST'] ."</td><td>HTTP_HOST</td></tr>";
echo "<tr><td>" .$_SERVER['HTTP_REFERER'] ."</td><td>HTTP_REFERER</td></tr>";
echo "<tr><td>" .$_SERVER['HTTP_USER_AGENT'] ."</td><td>HTTP_USER_AGENT</td></tr>";
echo "<tr><td>" .$_SERVER['HTTPS'] ."</td><td>HTTPS</td></tr>";
echo "<tr><td>" .$_SERVER['REMOTE_ADDR'] ."</td><td>REMOTE_ADDR</td></tr>";
echo "<tr><td>" .$_SERVER['REMOTE_HOST'] ."</td><td>REMOTE_HOST</td></tr>";
echo "<tr><td>" .$_SERVER['REMOTE_PORT'] ."</td><td>REMOTE_PORT</td></tr>";
echo "<tr><td>" .$_SERVER['SCRIPT_FILENAME'] ."</td><td>SCRIPT_FILENAME</td></tr>";
echo "<tr><td>" .$_SERVER['SERVER_ADMIN'] ."</td><td>SERVER_ADMIN</td></tr>";
echo "<tr><td>" .$_SERVER['SERVER_PORT'] ."</td><td>SERVER_PORT</td></tr>";
echo "<tr><td>" .$_SERVER['SERVER_SIGNATURE'] ."</td><td>SERVER_SIGNATURE</td></tr>";
echo "<tr><td>" .$_SERVER['PATH_TRANSLATED'] ."</td><td>PATH_TRANSLATED</td></tr>";
echo "<tr><td>" .$_SERVER['SCRIPT_NAME'] ."</td><td>SCRIPT_NAME</td></tr>";
echo "<tr><td>" .$_SERVER['REQUEST_URI'] ."</td><td>REQUEST_URI</td></tr>";
echo "<tr><td>" .$_SERVER['PHP_AUTH_DIGEST'] ."</td><td>PHP_AUTH_DIGEST</td></tr>";
echo "<tr><td>" .$_SERVER['PHP_AUTH_USER'] ."</td><td>PHP_AUTH_USER</td></tr>";
echo "<tr><td>" .$_SERVER['PHP_AUTH_PW'] ."</td><td>PHP_AUTH_PW</td></tr>";
echo "<tr><td>" .$_SERVER['AUTH_TYPE'] ."</td><td>AUTH_TYPE</td></tr>";
echo "</table>"
?>
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
SIMILARLY THE APACHE php commands allow you to request the headers etc.
http://www.php.net/manual/en/ref.apache.php
$headers = apache_request_headers();
foreach ($headers as $header => $value) {
echo "$header: $value <br />\n";
}
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
YOU CAN USE THESE VARIABLES TO CREATE AN INDEX.PHP LISTING FILES AND DIRS
<?php
$servername = $_SERVER['SERVER_NAME'];
$serverip = $_SERVER['SERVER_ADDR'];
$docroot = $_SERVER['DOCUMENT_ROOT'];
$page = $_SERVER['PHP_SELF'];
$querystring = $_SERVER['QUERY_STRING'];
$uri = $_SERVER['REQUEST_URI'];
echo "SERVER_ADDR: " . $serverip . "<br>";
echo "SERVER_NAME: " . $servername . "<br>";
echo "PHP_SELF: " . $page . "<br>";
echo "DOCUMENT_ROOT: " . $docroot . "<br>";
echo "QUERY_STRING: " . $querystring . "<br>";
echo "REQUEST_URI: " . $uri . "<br>";
echo "Put it together to get: " . $servername . $page . $querystring . "<br>";
$d = dir( getcwd() );
echo "Handle: " . $d->handle . ", Path (not necessarily accurate): " . $d->path . "\n<br>";
echo "<title>" . $d->path . "/</title>";
$dh = opendir( getcwd() );
while (false !== ($file = readdir($dh)))
{
if( $file != "." && $file != ".." ) //don't test the root directories
{
if( is_file($file) )
{ $filelist[] = $file; }
else
{ $dirlist[] = $file; }
}
}
echo "\n" . getcwd() . " contains " . sizeof($filelist) . " files and " .
sizeof($dirlist) . " directories\n<br>\n";
echo "<table>\n"; //a table for our dir/file names & sizes
if( $dirlist[0] != NULL ) //maybe there are no directories
{
sort($dirlist);
foreach ($dirlist as $value)
{
echo "<tr>";
echo "<td><a href=\"" . $value . "\">" . $value . "</a></td>";
echo "<td> </td>";
echo "<td>" . date("dMy H:s T", filemtime($value)) . "</td>";
echo "</tr>\n";
}
}
sort($filelist);
foreach ($filelist as $value)
{
echo "<tr>";
echo "<td><a href=\"" . $value . "\">" . $value . "</a></td>";
echo "<td> </td>";
echo "<td>" . filesize($value) . " bytes</td>";
echo "<td> </td>";
echo "<td>" . date("dMy H:s T", filemtime($value)) . "</td>";
echo "</tr>\n";
}
echo "</table>";
closedir($dh);
$d->close();
echo "\n";
?>
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
SUPERGLOBALS
Several predefined variables in PHP are "superglobals", which means they are
available in all scopes throughout a script. There is no need to do global
$variable; to access them within functions or methods.
These superglobal variables are:
$GLOBALS
$_SERVER
$_GET
$_POST
$_FILES
$_COOKIE
$_SESSION
$_REQUEST
$_ENV