dqnf28092
2014-08-21 09:08
浏览 549
已采纳

PHP move_uploaded_file权限被拒绝(权限设置为755)

I'm trying to upload a user's photo using a simple HTML input form, but I'm getting the following error. I've set the permissions of my upload folder to 755. I tried 777 and that works, but I've read that setting it to 777 is not advised and that I should be able to use 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/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

This is my php code:

$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;
}

图片转代码服务由CSDN问答提供 功能建议

我正在尝试使用简单的HTML输入表单上传用户的照片,但是我收到以下错误 。 我已经将我的上传文件夹的权限设置为755.我尝试了777但是有效,但我已经读过将其设置为777不建议我应该能够使用755吗? \ n

 警告:move_uploaded_file(uploads / 2014_08_21_11_03_14k.jpg)[function.move-uploaded-file]:无法打开流:第136行/home/yadayada/register.php中的权限被拒绝
警告:move_uploaded_file  ()[function.move-uploaded-file]:无法在第136行的/home/yadayada/register.php中将'/ tmp / php8KQwyh'移动到'uploads / 2014_08_21_11_03_14k.jpg'
   
 
 

这是我的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  )){
 //显示错误消息
返回; 
} 
}其他{
 //显示错误消息
返回; 
} 
   
 
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

3条回答 默认 最新

  • dream8877 2014-08-21 09:12
    已采纳

    First of all, you have to understand what is 755.

    For folder, 755 means drwxr-xr-x, which means:

    • Owner has Read, Write & Execute permission
    • Group & Public have Read and Execute permission only

    As the user running PHP is probably not the owner of the folder, it does not have write permission to the folder. Either:

    • You chown the folder to PHP's user; or
    • You make it 777: everybody has Read, Write & Execute permission

    Of course, the latter choice has a security issue, as if somebody uploads an executable shell script to your folder, he can execute the script. Therefore, you should stick with the first choice.

    打赏 评论
  • douting1871 2014-08-21 09:12

    You should probably chown the upload folder (move) to the same user as PHP runs under. Try this

    chown -R nobody uploaddir
    chmod -R 755 uploaddir
    
    打赏 评论
  • duanji8887 2014-08-21 09:14

    Have alook on this Permission

    if you set 755, your webserver will be the owner of the folder.

    打赏 评论

相关推荐 更多相似问题