Let's say that I'm executing a PHP program named foo.php. Is there any way that PHP can determine for itself what file is executing? I'm picturing a function that returns "foo.php" (or, even better, "/usr/A1234/foo.php". I would have thought such a function would already exist in PHP but I can't find anything like this in the PHP manual; maybe I just looked in the wrong place?
There are a few server variable you can use including PHP_SELF. Complete list @ http://php.net/manual/en/reserved.variables.server.php
$_SERVER['PHP_SELF'],$_SERVER['SCRIPT_NAME'] and $SERVER['ORIG_PATH_INFO'] any of one will return you your currently executing file name here are small program which will explain you in detail that what is use of $_SERVER. CODE ---- <?php $indicesServer = array('PHP_SELF', 'argv', 'argc', 'GATEWAY_INTERFACE', 'SERVER_ADDR', 'SERVER_NAME', 'SERVER_SOFTWARE', 'SERVER_PROTOCOL', 'REQUEST_METHOD', 'REQUEST_TIME', 'REQUEST_TIME_FLOAT', 'QUERY_STRING', 'DOCUMENT_ROOT', 'HTTP_ACCEPT', 'HTTP_ACCEPT_CHARSET', 'HTTP_ACCEPT_ENCODING', 'HTTP_ACCEPT_LANGUAGE', 'HTTP_CONNECTION', 'HTTP_HOST', 'HTTP_REFERER', 'HTTP_USER_AGENT', 'HTTPS', 'REMOTE_ADDR', 'REMOTE_HOST', 'REMOTE_PORT', 'REMOTE_USER', 'REDIRECT_REMOTE_USER', 'SCRIPT_FILENAME', 'SERVER_ADMIN', 'SERVER_PORT', 'SERVER_SIGNATURE', 'PATH_TRANSLATED', 'SCRIPT_NAME', 'REQUEST_URI', 'PHP_AUTH_DIGEST', 'PHP_AUTH_USER', 'PHP_AUTH_PW', 'AUTH_TYPE', 'PATH_INFO', 'ORIG_PATH_INFO') ; echo '<table cellpadding="10">' ; foreach ($indicesServer as $arg) { if (isset($_SERVER[$arg])) { echo '<tr><td>'.$arg.'</td><td>' . $_SERVER[$arg] . '</td></tr>' ; } else { echo '<tr><td>'.$arg.'</td><td>-</td></tr>' ; } } echo '</table>' ; ?> OUTPUT : PHP_SELF /index.php argv Array argc 0 GATEWAY_INTERFACE CGI/1.1 SERVER_ADDR 198.71.62.81 SERVER_NAME writephponline.com SERVER_SOFTWARE Apache SERVER_PROTOCOL HTTP/1.1 REQUEST_METHOD POST REQUEST_TIME 1496221964 REQUEST_TIME_FLOAT 1496221964.9166 QUERY_STRING DOCUMENT_ROOT /kunden/homepages/10/d586858977/htdocs/phponline.com HTTP_ACCEPT text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8 HTTP_ACCEPT_CHARSET - HTTP_ACCEPT_ENCODING gzip, deflate HTTP_ACCEPT_LANGUAGE en-US,en;q=0.8 HTTP_CONNECTION - HTTP_HOST www.writephponline.com HTTP_REFERER http://www.writephponline.com/ HTTP_USER_AGENT Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.66 Safari/537.36 HTTPS - REMOTE_ADDR 180.211.96.227 REMOTE_HOST - REMOTE_PORT 49712 REMOTE_USER - REDIRECT_REMOTE_USER - SCRIPT_FILENAME /kunden/homepages/10/d586858977/htdocs/phponline.com/index.php SERVER_ADMIN SERVER_PORT 80 SERVER_SIGNATURE PATH_TRANSLATED - SCRIPT_NAME /index.php REQUEST_URI / PHP_AUTH_DIGEST - PHP_AUTH_USER - PHP_AUTH_PW - AUTH_TYPE - PATH_INFO - ORIG_PATH_INFO /index.php
It would be very helpful if you could but such code-blocks inside [ code] [ /code] or [ php] [ /php] wrappers. (Remove the spaces). Makes it a lot more readable.
When using .htaccess or other frameworks routes to check what page is being served I use: echo basename($_SERVER['PHP_SELF']); PHP:
$file = pathinfo(__FILE__, PATHINFO_FILENAME); PHP: Reference: http://php.net/manual/en/function.pathinfo.php