Reputation: 157
so I have this Laravel project and I want to export an array to a json file to use it later. My permissions on the storage folder are 777 but when I do
$line=[
'key1'=>'value1',
];
file_put_contents("storage/app/test.json",json_encode($line));
I also tried
$line=[
'key1'=>'value1',
];
file_put_contents($_SERVER['DOCUMENT_ROOT']."/storage/app/test.json",json_encode($line));
and in both cases (plus some more) I get this error
file_put_contents(storage/app/test.json): failed to open stream: No such file or directory
Do you have any idea why is this happening?
EDIT: The folders exist
Upvotes: 5
Views: 34592
Reputation: 2980
You can use Laravel's helper method base_path():
The base_path function returns the fully qualified path to the project root.
Eg:
$fp = fopen(base_path() . 'app/Encryption/PrivateKeys/nginx-selfsigned.key','r');
Upvotes: 3
Reputation: 4894
You are working with storage folder but by default the path takes from public that why you need to use ../
Try like this
$file=fopen('../storage/app/test.json','w');
fwrite($file,json_encode($line));
fclose($file);
Upvotes: 14
Reputation: 206
Your directories have to exist before attempting to put files in them, regardless of permissions. I assume that's what is occurring. Likewise your permissions may be set on the storage
folder, but not the app
folder.
Upvotes: 0