当前位置: 首页 > 知识库问答 >
问题:

move_uploaded_file()权限被拒绝,无法移动PHP[重复]

陆飞鸿
2023-03-14

我正在为我的站点创建一个配置文件图片上载功能,但由于某种原因,move_uploaded_file()不想运行。

我尝试了多个论坛,测试了所有可能的不同方法,但没有运气。

<?php 
    if(isset($_FILES['avatar'])){
        if(empty($_FILES['avatar']['name'])){
            $errors[] = 'Please select an avatar.';
        } else {
            $ext = array('jpg', 'jpeg', 'png');

            $file       = $_FILES['avatar']['name'];
            $fileext    = strtolower(end(explode('.', $file)));
            $filetmp    = $_FILES['avatar']['tmp_name'];

            if(in_array($fileext, $ext)){
                $file = md5(microtime() . $filetmp) . '.' . $fileext;
                $filepth = './data/user_data/img/udid/prof/' . $file;
                move_uploaded_file($filetmp, $filepth);
            } else {
                $errors[] = 'Please select a valid file type. (JPG, JPEG or PNG)';
            }
        }
    }
?>
<form action="" method="post" class="avatar-form-form" enctype="multipart/form-data">
    <input type="file" name="avatar"><br>
    <input type="submit" value="Upload">
</form>

因此,首先,我检查所选文件是否有有效的扩展名,如果有,它将用microtime散列文件临时名(出于安全考虑)。然后,我将扩展连接到结尾,中间有一个句号,即输出将是md5hash.png

然后通过将文件变量连接到目录的末尾来创建一个文件路径变量。

然后,通过传递$filetmp$filepth变量(就像您应该做的那样)来继续文件上载函数。

Warning: move_uploaded_file(./data/user_data/img/udid/prof/e4d0cde3c9330222ef3ab651fe797bed.jpg):
failed to open stream: Permission denied in /Applications/XAMPP/xamppfiles/htdocs/test/settings.php
on line 40


Warning: move_uploaded_file(): Unable to move '/Applications/XAMPP/xamppfiles/temp/phpkWSGLy'
to './data/user_data/img/udid/prof/e4d0cde3c9330222ef3ab651fe797bed.jpg'
in /Applications/XAMPP/xamppfiles/htdocs/test/settings.php
on line 40

这是我当前的布局:

settings页面(用户上传图片的页面)位于根目录中。

我想把头像放在的位置是一个文件夹里面(也在根目录中)。

编辑:

因此,事实证明,默认情况下,在MacBook上(当运行XAMPP时),XAMPP/htdocs中的所有文件都设置为只读,您必须手动将它们设置为“读&写”,以允许move_uploaded_file工作。

共有1个答案

喻渊
2023-03-14

检查是否为MacBook中的上传图像文件夹设置了适当的写入权限。

 类似资料:
  • 我想上传一张图片。每次我试图上传图片时,我都会收到下面的错误信息。 我已经设置了读取权限 警告:move_uploaded_file(上载/1000020170620022532img3.png):无法打开流: /Applications/XAMPP/xamppfiles/htdocs/social-network-master/profile.php第41行的权限被拒绝 警告:move_uplo

  • 嘿,我总是出错 警告:move_uploaded_file(路径):无法打开流:/Users/Shared/xampp htdocs/php reports/upload中的权限被拒绝。php第27行 我的index.php密码是 我的php代码是 我还将目录设置为 chmod 777

  • 问题内容: 当尝试在CentOS上使用Apache 2.2和PHP 5.3配置上传目录时,我一直收到此错误。 在php.ini中: 在httpd.conf中: CentOS目录权限: 无论我做什么,在上传文件时,都会不断从PHP收到此错误: 警告:move_uploaded_file(images / robot.jpg):无法打开流:在第78行的/var/www/html/mysite/proc

  • 我是PHP新手。我计划根据用户输入创建文件夹、子文件夹。 文件夹和子文件夹已成功创建。 最后我尝试创建一个文件,它显示以下错误。 fopen(upload/llocalhost/hrms):无法打开流:在C:\xamp\htdocs\ssspider\index中的权限被拒绝。php第205行 我的代码是: 请帮我找出我的问题? 编辑:谢谢。我出错了。以前我没有提到文件名。现在工作正常。谢谢

  • 我在Macbook pro osx 10.9 Firefox浏览器上使用XAMP 1.7.3 基本上,我正在尝试编写一个代码,要求用户输入一些信息,然后使用以下方法将信息存储在.txt文件中: 但是我一直收到这个错误消息: 警告:fopen(registration.txt) [function.fopen]:无法打开流:第 30 行的 /Applications/XAMPP/xamppfiles

  • 问题内容: max@serv$ whoami max max@serv$ ls -la ./defines.php -rwxrwxrwx 1 max max 1985 2011-11-16 02:01 ./defines.php max@serv$ chmod 0777 ./defines.php max@serv$ rm ./defines.php rm: cannot remove `./de