Path-based tmpfile in PHP

March 5, 2013

PHP has the tmpfile function for creating a file handle which will automatically be destroyed when it is closed or when the script ends. PHP also has the tempnam function which takes care of creating the file and returning the path, but doesn't automatically destroy the file.

To get the best of both worlds (temp file + auto-destroy), I have found this useful:

function tmpfilepath() {
    $path = stream_get_meta_data(tmpfile())['uri'];

    register_shutdown_function(
        function () use ($path) {
            unlink($path);
        }
    );

    return $path;
}