PHP move_uploaded_file 文件系统

标签 php mysql file-upload upload filesystems

大家。我在让 PHP 将文件移动到目录中时遇到问题。 mkdir 在创建目录时工作得很好,并且 mysql 表正在插入所有文件。不过,move_uploaded_file 步骤无法正常工作。

        //filestorage variables 
        $uniqid = uniqid();
        $folder = 'documents/' . $uniqid; //drill down further with m/d currentDate
        $file   = $_FILES['file'];
        $i      = 0;

        //iterate through $_FILES array
        foreach ($file as $f){      
            $temp   = $file['tmp_name'][$i];
            $name   = $file['name'][$i];
            $dest   = $folder . '/' . $name;

        //store file on server      
            if(!file_exists($folder)){
                mkdir($folder);
                chmod($folder, 0755);
                }
            if(isset($_FILES['file'])){                     
                move_uploaded_file($temp, $dest);
                echo "upload complete"; 
                if(move_uploaded_file($temp, $dest)){
                    echo '<p> successful step </p>' . $dest;
                   }
               }

        //prepare and submit files to database  
            if (count($_FILES) > 0){
                if(is_uploaded_file($temp)) {
                    echo '<p>' . "The file is, in fact, uploaded." . '</p>';
                    $sql = "INSERT INTO uploads (`file_dest`) VALUES ( :dest )";
                    $stmt = $pdo->prepare($sql);
                    $stmt->bindParam(':dest', $dest, PDO::PARAM_STR, strlen($dest));
                    $stmt->execute();
                    echo 'the following file was uploaded <p><img src="' . $dest . '" /></p>';
                    echo 'from ' . $folder . '/' . $name;
                    }
                }
            $i++;
            }

我是否需要将目标名称完全限定到根级别?在使目录名称变得有点棘手后,我在某个时刻破坏了一些东西。当文件夹被称为“文档”时,这是有效的(当然,当时的代码也有点不同。

我在apache的错误日志中收到的错误消息如下:

[2014 年 6 月 19 日星期四 11:30:01] [错误] [客户端 127.0.0.1] PHP 警告:chmod() [function.chmod]:/Volumes/Secure/project/Web/Webroot/中不允许操作public_html/index.php 第 65 行,引用:MyWebpage

[2014 年 6 月 19 日星期四 11:30:01] [错误] [客户端 127.0.0.1] PHP 警告:move_uploaded_file(documents/53a310094d082/0000b.jpg) [function.move-uploaded-file]: 无法打开流:第 68 行/Volumes/Secure/project/Web/Webroot/public_html/index.php 中的权限被拒绝,引荐来源:MyWebpage

[2014 年 6 月 19 日星期四 11:30:01] [错误] [客户端 127.0.0.1] PHP 警告:move_uploaded_file() [function.move-uploaded-file]:无法移动 '/private/var/tmp/phptrm0HP' 到/Volumes/Secure/中的 'documents/53a310094d082/0000b.jpg' project/Web/Webroot/public_html/index.php 第 68 行,引用:MyWebpage

最佳答案

该问题源自在 Mac OSX 上使用外部卷。它会自动在卷上标记此选项:

忽略所有权权限

取消选中该选项后,mkdir 和类似命令可以在 Web 服务器上正常工作。

关于PHP move_uploaded_file 文件系统,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24312454/

相关文章:

php - Paypal API 直接 : buyer to seller payment(s)

PHP - 从 json 保存对象键

Bash:expect + scp:多个文件出现问题

php - 如何使用 cakephp 1.3 上传文件

php - 如何检查文件输入字段是否为空?

php - 嵌套的php循环仅在连接到sql时运行一次

php - 将变量格式化为 map 上信息窗口中的链接

mysql - 使用 Join 在 MySQL 中正确删除

mysql - SQL 按一列中的多个值组分组

mysql - 如何在 MySQL 中按两列比较两个查询?