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 will remove the file’s path from your string and leave only the filename. So, for example, 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, a dot (‘.‘) is returned, indicating the current file path. Otherwise, the returned string is a 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 to the front-end. Your remove file paths for security reasons.

We can use basepath() to sanitize 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 . ']';
...

You may also be interested in

About Anto Online

Anto, a seasoned technologist with over two decades of experience, has traversed the tech landscape from Desktop Support Engineer to enterprise application consultant, specializing in AWS serverless technologies. He guides clients in leveraging serverless solutions while passionately exploring cutting-edge cloud concepts beyond his daily work. Anto's dedication to continuous learning, experimentation, and collaboration makes him a true inspiration, igniting others' interest in the transformative power of cloud computing.

View all posts by Anto Online

7 Comments on “How to remove the base path from a file path in PHP”

  1. Awesome blog for knowledge. Thank you for sharing this useful article. This blog is a very helpful to me. Keep sharing this type informative articles with us.

  2. Awesome blog for knowledge. Thank you for sharing this useful article. This blog is a very helpful to me. Keep sharing this type informative articles with us.

  3. The best explanation I have read and very easy to understand and apply. Thank you for sharing.

Leave a Reply

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

This site uses Akismet to reduce spam. Learn how your comment data is processed.