Как загрузить в папку выше root - PullRequest
0 голосов
/ 23 октября 2011

Я хочу загрузить в каталог «Uploads», который находится на один шаг выше корня (с помощью Plesk).

Может кто-нибудь сказать мне, почему файлы не будут загружаться туда?Разрешения были предоставлены для Загрузок как 777.

ob_start();

session_start();

$extensions = array("jpg", "png","jpeg", "gif", "zip", "rar", "swf", "tiff", "bmp", "txt", "fla", "7z", "tar", "gz", "iso", 

"dmg", "mp3", "wav", "m4a", "aac", "doc", "docx", "xls", "rtf", "ppt", "bsd", "exe", "psd", "c4d", "pdf", "dwg", "max", "ipa", 

"vtf", "iam", "ipt", "flv", "cap", "scr");
$maxsize = 104288000;
$server = "http://www.andre.com";

$name = $_FILES['file']['name'];
$temp = $_FILES['file']['tmp_name'];
$size = $_FILES['file']['size'];

$random = md5(uniqid(rand(), true));
$random = substr($random, 0, 20);

if (!$name || !$temp || !$size)
{
   echo "Go back and select a file.";
   exit();
}

foreach ($_FILES as $file)
{
 if ($file['tmp_name'] != null) 
 {
    $thisext1=explode(".", strtolower($file['name']));
    $thisext=$thisext1[count($thisext1)-1];
  if (!in_array($thisext, $extensions))
  {
    echo "That file type is not allowed.";
   exit(); 
  }
 }
}

if ($size > $maxsize)
{
   echo "File size too big.";
   exit();
}


$destination = "../Uploads/" . $random ;
mkdir($destination);
move_uploaded_file($temp, $destination."/".$name);

$final = $server."/".$destination."/".$name;

В частности,

 $destination = "../Uploads/" . $random ;

, который находится в /var/www/vhosts/example.com/Uploads.

Ответы [ 4 ]

1 голос
/ 23 октября 2011

могут быть open_basedir или safe_mode ограничения, также проверьте права пользователя

0 голосов
/ 23 октября 2011

У меня была ошибка open_basedir, как предложил user973 ...

Решено созданием vhost.conf в:

/ вар / WWW / виртуальных доменов / site.com / конф

Добавлено следующее:

<Directory /var/www/vhosts/site.com/httpdocs/>
php_admin_value open_basedir    "/var/www/vhosts/uploadvillage.com/httpdocs:/tmp:/var/www/vhosts/site.com/Uploads"
</Directory> 

и затем перестроить конфигурацию apache с помощью:

[root@server1 ~]# /usr/local/psa/admin/bin/httpdmng --reconfigure-all
0 голосов
/ 23 октября 2011

Попробуйте привязать свой относительный путь, используя $_SERVER['DOCUMENT_ROOT']:

$destination = $_SERVER["DOCUMENT_ROOT"] . "/../Uploads/" . $random;

В качестве альтернативы, вы можете использовать путь относительно текущего скрипта PHP, используя __DIR__ (или dirname(__FILE__), если вы используете PHP 5.2):

$destination = __DIR__ . "/../Uploads/" . $random;
0 голосов
/ 23 октября 2011

Если вы пытаетесь загрузить файл из корневого каталога в раздел «Загрузки», вы не используете ../Uploads/ для ссылки на этот каталог. Это либо ./Uploads/, либо просто Uploads /.

.. / ссылается на каталог над текущим каталогом, который в вашем случае будет /var/www/vhosts/.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...