How to remove the base path from a file path in PHP

Removing the file path from a filename in PHP is be easy!

The basename() function that will remove the path of the file from your string and leave only the filename. It means that if your file path string is: ‘/home/anto.online/apac/basepath/test.php’, then using basename($path) will return only the filename. The result will thus be: ‘test.php’.

Functions used in conjunction

The basename() function is often used with these PHP functions:

realpath() – Returns the full absolute path, including the filename.

dirname() – Can return the file path of a parent directory. If there are no slashes in the file path, then a dot (‘.‘) is returned, which indicates the current file path. Otherwise, the returned string is file path with any trailing component removed.

Example of how to use these functions in PHP:

//get the absolute path of a file
$real = realpath('./test.php');
echo 'realpath result: ' . $real . '<br>';
//output: /home/anto.online/apac/basepath/test.php

//get the absolute path of a file
$dir = dirname('./test.php');
echo 'dirname result: ' . $dir . '<br>';
//output: .

//get the filename and remove the filepath
$base = basename($real);
echo 'basename result: ' . $base . '<br>';
//output: test.php

Practical example – Removing file path from error message

Let’s say you need to write an error handler in PHP. The custom handler must not expose paths the front-end. Your remove file paths for security reasons.

We can use basepath() to sanitise the $file variable and remove file paths.

Thus, for the custom error handler example below:

function customErrorHandler($code, $message, $file, $line) {
$logger = createLogger();
...

We can do this by determining the string position of the ‘/’ and then use a  substring function. (This would be the hard way!)

Alternatively, we can use the basename() method in PHP. It even considers the differences between Windows and Linux!

Adding the basename() function will make our error handler look like this:

function customErrorHandler($code, $message, $file, $line) {
$logger = createLogger();
...
$message = 'Error ID: [' . $uid . '] [' . SITE_ID . '] ' . $user . 'Message: [' . $message . '] At: [' . basename($file) . '] Line: [' . $line . '] Code: [' . $code . ']';
...

Follow me on Twitter at https://twitter.com/OnlineAnto to get updates to my posts! Read other great posts at https://anto.online/!



About the Authors

Each member of Anto's editorial team is a Cloud expert in their own right. Anto Online takes great pride in helping fellow Cloud enthusiasts. Let us know if you have an excellent idea for the next topic!

Support the Cause

Support Anto Online and buy us a coffee. Anything is possible with coffee and code.

Buy me a coffee



One Comment on “How to remove the base path from a file path in PHP”

Leave a Reply

Your email address will not be published. Required fields are marked *