如何安全地使用file_put_contents()

时间:2016-05-26 16:20:01

标签: php security chmod

我有一个cronjob.php脚本,用于计算数组并​​将其保存在文件夹中

www.mywebsite.com/resoucres/array.json

cronjob.php

$array = array();

// A lot of code

file_put_contents("array.json",json_encode($array));

当我执行脚本时,我得到了

  

file_put_contents(array.json):无法打开流:权限   在/home/user/www/mywebsite.com/resoucres/cronjob.php中被拒绝

现在按照file_put_contents permission denied的建议,可以简单地给文件夹resources chmod 777.但这不是安全风险吗?

这是否意味着其他人也可以在此目录中的文件上写入?是否有可能只给cronjob.php更改文件array.json的权限,或者我是否真的需要将文件夹移动到/www/resources/cronjob.php/所以它可以有chmod 777但是因为没有人可以访问它,所以保存?

1 个答案:

答案 0 :(得分:2)

如果您想允许写入文件并在某种程度上保护它们。

在Web服务器根目录之外创建一个位置。

root dir = / opt / www / html /

数据目录= / opt / www / data /

授予Web服务器对数据目录的写访问权。

让您的程序参与数据目录。

然后使用第二个程序从数据目录中读取。

这样,Web服务器就无法直接访问这些文件。