# phpman > man > CGI::Session::Driver::file(3pm)

## NAME
    [CGI::Session::Driver::file](https://www.chedong.com/phpMan.php/perldoc/CGI%3A%3ASession%3A%3ADriver%3A%3Afile/markdown) - Default [CGI::Session](https://www.chedong.com/phpMan.php/perldoc/CGI%3A%3ASession/markdown) driver

## SYNOPSIS
        $s = [CGI::Session](https://www.chedong.com/phpMan.php/perldoc/CGI%3A%3ASession/markdown)->new();
        $s = [CGI::Session](https://www.chedong.com/phpMan.php/perldoc/CGI%3A%3ASession/markdown)->new("driver:file", $sid);
        $s = [CGI::Session](https://www.chedong.com/phpMan.php/perldoc/CGI%3A%3ASession/markdown)->new("driver:file", $sid, {Directory=>'/tmp'});

## DESCRIPTION
    When [CGI::Session](https://www.chedong.com/phpMan.php/perldoc/CGI%3A%3ASession/markdown) object is created without explicitly setting *driver*, *file* will be assumed.
    *file* - driver will store session data in plain files, where each session will be stored in a
    separate file.

    Naming conventions of session files are defined by $[CGI::Session::Driver::file::FileName](https://www.chedong.com/phpMan.php/perldoc/CGI%3A%3ASession%3A%3ADriver%3A%3Afile%3A%3AFileName/markdown) global
    variable. Default value of this variable is *cgisess_%s*, where %s will be replaced with
    respective session ID. Should you wish to set your own FileName template, do so before
    requesting for session object:

        use [CGI::Session::Driver::file](https://www.chedong.com/phpMan.php/perldoc/CGI%3A%3ASession%3A%3ADriver%3A%3Afile/markdown); # This line is mandatory.
        # Time passes...
        $[CGI::Session::Driver::file::FileName](https://www.chedong.com/phpMan.php/perldoc/CGI%3A%3ASession%3A%3ADriver%3A%3Afile%3A%3AFileName/markdown) = "%s.dat";
        $s = [CGI::Session](https://www.chedong.com/phpMan.php/perldoc/CGI%3A%3ASession/markdown)->new();

    For backwards compatibility with 3.x, you can also use the variable name
    $[CGI::Session::File::FileName](https://www.chedong.com/phpMan.php/perldoc/CGI%3A%3ASession%3A%3AFile%3A%3AFileName/markdown), which will override the one above.

  DRIVER ARGUMENTS
    If you wish to specify a session directory, use the Directory option, which denotes location of
    the directory where session ids are to be kept. If Directory is not set, defaults to whatever
    [File::Spec](https://www.chedong.com/phpMan.php/perldoc/File%3A%3ASpec/markdown)->tmpdir() returns. So all the three lines in the SYNOPSIS section of this manual
    produce the same result on a UNIX machine.

    If specified Directory does not exist, all necessary directory hierarchy will be created.

    By default, sessions are created with a umask of 0660. If you wish to change the umask for a
    session, pass a UMask option with an octal representation of the umask you would like for said
    session.

## NOTES
    If your OS doesn't support flock, you should understand the risks of going without locking the
    session files. Since sessions tend to be used in environments where race conditions may occur
    due to concurrent access of files by different processes, locking tends to be seen as a good and
    very necessary thing. If you still want to use this driver but don't want flock, set
    $[CGI::Session::Driver::file::NoFlock](https://www.chedong.com/phpMan.php/perldoc/CGI%3A%3ASession%3A%3ADriver%3A%3Afile%3A%3ANoFlock/markdown) to 1 or pass "NoFlock => 1" and this driver will operate
    without locks.

## LICENSING
    For support and licensing see [CGI::Session](https://www.chedong.com/phpMan.php/perldoc/CGI%3A%3ASession/markdown)

