所以我有这个Laravel项目,我想将数组导出到json文件以便以后使用它。我对存储文件夹的权限是777,但是当我这样做时
$line=[
'key1'=>'value1',
];
file_put_contents("storage/app/test.json",json_encode($line));
我也试过
$line=[
'key1'=>'value1',
];
file_put_contents($_SERVER['DOCUMENT_ROOT']."/storage/app/test.json",json_encode($line));
并且在两种情况下(加上一些)我都会收到此错误
file_put_contents(storage/app/test.json): failed to open stream: No such file or directory
你知道为什么会这样吗?
编辑:文件夹存在
答案 0 :(得分:4)
您正在使用存储文件夹,但默认情况下路径来自公开,说明您需要使用../
的原因
试试这个
$file=fopen('../storage/app/test.json','w');
fwrite($file,json_encode($line));
fclose($file);
答案 1 :(得分:1)
您可以使用Laravel File Storage
答案 2 :(得分:0)
在尝试将文件放入其中之前,您的目录必须存在,无论权限如何。我假设发生了什么。同样,您的权限可以设置在storage
文件夹中,但不能设置在app
文件夹中。
答案 3 :(得分:0)
您可以使用Laravel的辅助方法base_path():
base_path函数返回到项目根目录的标准路径。
例如:
$fp = fopen(base_path() . 'app/Encryption/PrivateKeys/nginx-selfsigned.key','r');
答案 4 :(得分:0)
嗨,团队,我面临着更类似的问题。所以我在 storage/cpdpoints 中保存了一个文件,但我想读取该文件,然后将其移动到 Public 文件夹中
project/public/cdpoints。
我已经尝试了以下
$file = Storage::path($path);
$file = fopen($file, 'r');
if ($file) {
//get file original name
$name = $file->getClientOriginalName();
//create a unique file name using the time variable plus the name
$file_name = time() . $name;
//upload the file to a directory in Public folder
$path = $file->move('cpdpoints', $file_name);
}