Php 对文件夹启用权限以允许文件上载。

Php 对文件夹启用权限以允许文件上载。,php,apache,upload,xampp,Php,Apache,Upload,Xampp,我在mac上使用xampp。我尝试使用以下脚本将文件上载到文件夹: upload.php <?php $allowedExts = array("gif", "jpeg", "jpg", "png"); $extension = end(explode(".", $_FILES["file"]["name"])); if ((($_FILES["file"]["type"] == "image/gif") || ($_FILES["file"]["type"] == "image/jpeg

我在mac上使用xampp。我尝试使用以下脚本将文件上载到文件夹:

upload.php

<?php
$allowedExts = array("gif", "jpeg", "jpg", "png");
$extension = end(explode(".", $_FILES["file"]["name"]));
if ((($_FILES["file"]["type"] == "image/gif")
|| ($_FILES["file"]["type"] == "image/jpeg")
|| ($_FILES["file"]["type"] == "image/jpg")
|| ($_FILES["file"]["type"] == "image/png"))
&& ($_FILES["file"]["size"] < 20000)
&& in_array($extension, $allowedExts))
  {
  if ($_FILES["file"]["error"] > 0)
    {
    echo "Return Code: " . $_FILES["file"]["error"] . "<br>";
    }
  else
    {
    echo "Upload: " . $_FILES["file"]["name"] . "<br>";
    echo "Type: " . $_FILES["file"]["type"] . "<br>";
    echo "Size: " . ($_FILES["file"]["size"] / 1024) . " kB<br>";
    echo "Temp file: " . $_FILES["file"]["tmp_name"] . "<br>";

    if (file_exists("upload/" . $_FILES["file"]["name"]))
      {
      echo $_FILES["file"]["name"] . " already exists. ";
      }
    else
      {
      move_uploaded_file($_FILES["file"]["tmp_name"],
      "upload/" . $_FILES["file"]["name"]);
      echo "Stored in: " . "upload/" . $_FILES["file"]["name"];
      }
    }
  }
else
  {
  echo "Invalid file";
  }
?>
运行脚本时,出现以下错误:

警告:移动上传的文件(upload/dirt.png) [函数.移动上传文件]:无法打开流:权限 否认 /Applications/XAMPP/xamppfiles/htdocs/development/Templates/PHP&JS/Upload 第29行的Server/form upload/upload.php文件

警告:移动上传的文件()[函数.移动上传的文件]:无法 将“/Applications/XAMPP/xamppfiles/temp/phpAQWDB1”移动到 中的“upload/dirt.png” /Applications/XAMPP/xamppfiles/htdocs/development/Templates/PHP&JS/Upload 第29行的Server/form upload/upload.php文件存储在: 上传/dirty.png


如何更改上载文件夹的属性以允许上载文件?我是否应该包含一个配置文件来启用此功能?

您需要运行该命令

chmod -Rf 777 FOLDER_PATH

此处文件夹路径是存储图像的您的文件夹路径

运行
chmod
,以设置上载文件夹的正确权限。看线程。这在安全性方面是一个非常糟糕的想法。我知道这是一个当地的环境,但它给出了一个坏的例子。问题当然是上传文件的文件夹的所有者现在是Apache的用户(通常是www-data)
sudo-chown www-data:www-data-folder\u-PATH
,权限可以是700(最安全)或755(因此您可以在本地查看内容)@Tibo我刚刚给出了解决方案...这取决于他们的意愿,是给777还是755或任何其他..(根据他们的要求)我同意你的观点,我只是认为他们现在(或其他读者)可能不会认为这里存在安全问题,还有另一种保持安全的方法.我同意@Tibo:这是个坏主意。而且这不是一个解决方案…这只是一个糟糕的解决办法。正确的答案是,您必须向执行apache进程的用户或拥有该文件夹的组授予写访问权。例如,您可以这样做:
chown-R您的用户:www-data folder/&find folder/-type f-exec chmod 660{}+&find folder/-type d-exec chmod{}+
。您的用户在www数据组中的位置
-/htdocs
  -index.html
  -upload.php
  -/upload
chmod -Rf 777 FOLDER_PATH