PHP移动上传文件权限被拒绝(权限设置为755)
我试图用一个简单的HTML输入表单上传一个用户的照片,但是我得到了以下错误。我已将上载文件夹的权限设置为755。我试过777,效果很好,但我读到不建议将其设置为777,我应该可以使用755PHP移动上传文件权限被拒绝(权限设置为755),php,file-permissions,Php,File Permissions,我试图用一个简单的HTML输入表单上传一个用户的照片,但是我得到了以下错误。我已将上载文件夹的权限设置为755。我试过777,效果很好,但我读到不建议将其设置为777,我应该可以使用755 Warning: move_uploaded_file(uploads/2014_08_21_11_03_14k.jpg) [function.move-uploaded-file]: failed to open stream: Permission denied in /home/yadayada/reg
Warning: move_uploaded_file(uploads/2014_08_21_11_03_14k.jpg) [function.move-uploaded-file]: failed to open stream: Permission denied in /home/yadayada/register.php on line 136
Warning: move_uploaded_file() [function.move-uploaded-file]: Unable to move '/tmp/php8KQwyh' to 'uploads/2014_08_21_11_03_14k.jpg' in /home/yadayada/register.php on line 136
这是我的php代码:
$userPhotoUrl = 'uploads/'.date('Y_m_d_H_i_s').$_FILES['photo']['name'];
if (is_uploaded_file($_FILES['photo']['tmp_name'])) {
if (!move_uploaded_file($_FILES['photo']['tmp_name'], $userPhotoUrl)) {
// show error message
return;
}
} else {
// show error message
return;
}
首先,你必须了解什么是755 对于文件夹,755表示
drwxr-xr-x
,表示:
- 所有者具有读取、写入和执行权限
- 组和公共仅具有读取和执行权限
- 您
将文件夹发送给PHP的用户;或chown
- 您使其成为
:每个人都有读、写和执行权限777
当然,后一种选择存在安全问题,就像有人将可执行的shell脚本上传到您的文件夹中一样,他可以执行该脚本。因此,您应该坚持第一种选择。您可能应该将上载文件夹(移动)转移到与PHP运行相同的用户。试试这个
chown -R nobody uploaddir
chmod -R 755 uploaddir
对此有意见吗
如果设置为755,您的Web服务器将成为文件夹的所有者。?不是真的。文件夹所有者不一定是web服务器的用户。我想我发现了问题。我将.htaccess文件放在了错误的文件夹中。现在可以工作:)仅供参考,
chown
可以通过SSH在服务器外壳中运行。难道r-x
不意味着读取和执行吗?你为什么说它是“只读权限”?