我正在尝试通过将文件上传到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);
}
答案 0 :(得分:0)
当您不是某物的所有者或尝试更改权限时,需要使用Sudo。因此,如果您希望php脚本可以访问上层目录。更改上层目录的组或用户所有者,与php executor相同,大多数情况下是www-data
您可以使用
检查php脚本的所有者 ls -al
然后使用
更改所有者 chown -hR www-data:www-data directorypath
有关更多详细信息,请查看chown命令手册
这很可能会解决您的问题
其他信息
指定绝对路径而不是相对路径解决了问题