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


How to make directory outside of current directory?

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

我正在测试我的脚本和我的脚本工作时,我执行sudo php receive_files.php,但当我运行receive_files.php没有sudo我得到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);
}

当您不是某些东西的所有者或您试图更改权限时需要Sudo。所以如果你想让php脚本访问上层目录。更改上层目录的组或用户所有者,与php执行器相同,在大多数情况下为www-data

你可以使用

来检查php脚本的所有者

ls -al

然后使用

更改owner

chown -hR www-data:www-data directorypath

查看chown命令手册

这很可能会解决你的问题

相关的附加信息

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