I need to know if there is any way to create new folder if the path doesn't exist. When I try to fopen() a path, it says NO such File or Directory exists I tried to open the file using 'w' and 'w+' but it is not able to create new folder. Is there any way to achieve it without using mkdir(). Because I need to extract the directory names alone from the path to mkdir() everytime.  Any help is appreciated. Thanks...
            Asked
            
        
        
            Active
            
        
            Viewed 3.5k times
        
    36
            
            
         
    
    
        Vivek
        
- 4,526
- 17
- 56
- 69
3 Answers
100
            fopen cannot create directories.
You'll need to use something like:
$filename = '/path/to/some/file.txt';
$dirname = dirname($filename);
if (!is_dir($dirname))
{
    mkdir($dirname, 0755, true);
}
 
    
    
        Chris Happy
        
- 7,088
- 2
- 22
- 49
 
    
    
        qbert220
        
- 11,220
- 4
- 31
- 31
9
            
            
        fopen doesn't create or open folders, only files. You should check with is_dir first if it exists, if not create it. mkdir has a recursive create option.
if (!is_dir($myDir)) {
    mkdir($myDir, 0777, true); // true for recursive create
}
If you are looking for a way to open a dir and read it's content you should look at SPL's DirectoryIterator
 
    
    
        ChrisR
        
- 14,370
- 16
- 70
- 107
4
            
            
        you can't use fopen to create folders.
To create a folder you have to use mkdir
for the operations you have to repeat every time, there is a language feature called "user-defined functions". Least known feature of PHP, as one can say judging by stackoverflow answers.
 
    
    
        Your Common Sense
        
- 156,878
- 40
- 214
- 345
- 
                    3> for the operations you have to repeat every time, there is a language feature called "user-defined functions". Least known feature of PHP, as one can say judging by stackoverflow answers: LOL – nkkollaw May 12 '13 at 14:04