move_uploaded_file()权限被拒绝,无法移动PHP

时间:2016-05-08 01:49:18

标签: php

我正在为我的网站创建个人资料图片上传功能,但出于某种原因,INSERT INTO setList...不想运行。

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

这是我的PHP& HTML:

move_uploaded_file()

首先,我检查所选文件是否具有有效的扩展名,如果是,它将使用microtime散列文件临时名称(为了安全起见)。然后我将扩展连接到末尾,并在它之间完全停止,即输出将为<?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>

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

然后我通过传递md5hash.png$filetmp变量继续执行文件上传功能(就像你应该做的那样)。

但是,当我在我的页面上测试此功能时,我会收到以下错误:

$filepth

这是我目前的布局:

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

我想放置头像的位置在文件夹内(也在根目录中。

我目前正在运行XAMPP的MacBook上测试所有这些,并确保将file_uploads设置为&#34; on&#34;在我的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 文件中。

感谢所有帮助。不确定如果我做错了,但我几乎可以肯定我没有。

修改

所以,事实证明,默认情况下,MacBook(运行XAMPP时),XAMPP / htdocs内的所有文件都设置为只读,你必须手动将它们设置为&#34; read&amp;写&#34;允许php.ini工作。

1 个答案:

答案 0 :(得分:1)

检查您是否在MacBook中为上传的图像文件夹设置了正确的写入权限。