我正试图通过将文件上传到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命令手册
这很可能会解决你的问题
相关的附加信息指定绝对路径而不是相对路径解决了问题