Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Creating a folder when I run file_put_contents()

Tags:

php

I have uploaded a lot of images from the website, and need to organize files in a better way. Therefore, I decide to create a folder by months.

$month  = date('Yd') file_put_contents("upload/promotions/".$month."/".$image, $contents_data); 

after I tried this one, I get error result.

Message: file_put_contents(upload/promotions/201211/ang232.png): failed to open stream: No such file or directory

If I tried to put only file in exist folder, it worked. However, it failed to create a new folder.

Is there a way to solve this problem?

like image 590
Jake Avatar asked Nov 14 '12 02:11

Jake


People also ask

Does file_put_contents create a file?

The file_put_contents() function checks for the file in which the user wants to write and if the file doesn't exist, it creates a new file.

Does file_ put_ contents create directory?

file_put_contents() does not create the directory structure. Only the file. You will need to add logic to your script to test if the month directory exists.


1 Answers

file_put_contents() does not create the directory structure. Only the file.

You will need to add logic to your script to test if the month directory exists. If not, use mkdir() first.

if (!is_dir('upload/promotions/' . $month)) {   // dir doesn't exist, make it   mkdir('upload/promotions/' . $month); }  file_put_contents('upload/promotions/' . $month . '/' . $image, $contents_data); 

Update: mkdir() accepts a third parameter of $recursive which will create any missing directory structure. Might be useful if you need to create multiple directories.

Example with recursive and directory permissions set to 777:

mkdir('upload/promotions/' . $month, 0777, true); 
like image 174
Jason McCreary Avatar answered Oct 11 '22 12:10

Jason McCreary