如何在当前目录之外创建目录?

时间:2016-10-23 19:48:27

标签: php linux ubuntu file-upload permissions

我正在尝试通过将文件上传到public_html以外的目录来创建处理文件上传的安全方式。

我正在测试我的脚本,我的脚本在执行sudo php receive_files.php时有效,但当我在没有sudo的情况下运行receive_files.php时,我得到了failed to open stream: Permission denied.

现在所有权限一直回到var/www/html/mysite/public_html设置为755.我尝试将所有权限更改为775并且命令仍然无法正常工作 没有sudo。而且我很确定这不安全。我该如何解决这个问题?

我的代码:

$encoded_file = $_POST['file'];
$user_id = $_POST['user_id'];
$decoded_file = base64_decode($encoded_file);

$new_directory = "../../../../../../user_uploads/$user_id/";

if(!file_exists($new_directory)){
    mkdir($new_directory, 0775, true);
    file_put_contents($new_directory . $decoded_file);
}

1 个答案:

答案 0 :(得分:0)

当您不是某物的所有者或尝试更改权限时,需要使用Sudo。因此,如果您希望php脚本可以访问上层目录。更改上层目录的组或用户所有者,与php executor相同,大多数情况下是www-data

您可以使用

检查php脚本的所有者

ls -al

然后使用

更改所有者

chown -hR www-data:www-data directorypath

有关更多详细信息,请查看chown命令手册

这很可能会解决您的问题

其他信息

  

指定绝对路径而不是相对路径解决了问题