При загрузке файлов можно использовать как абсолютные, так и относительные пути. Но при доступе к этим файлам позже я должен использовать только относительные пути. Зачем?

Локально, в PHP, когда я использую move_uploaded_file для загрузки файлов (скажем, изображений), оба абсолютный а также родственник пути назначения работают.

После загрузки этих изображений в указанный целевой путь эти изображения можно отобразить только на веб-странице, используя родственник дорожка — абсолютный путь не сработает.

Зачем?!!

ОС: Windows 7 Ultimate
Версия PHP 7.1.1
IDE: среда IDE NetBeans 8.2


Структура проекта:

example
│
└───Source Files
│
└upload_display_example
│  images
│    │(empty)
│    └
│  display_photo.php
│  photo_upload.php
│

photo_upload.php

<?php
defined('DS') ? null : define('DS', DIRECTORY_SEPARATOR);

// Both $absolute and $relative paths work
function get_path() {
// return $absolute = $_SERVER['DOCUMENT_ROOT'] . DS . 'example' . DS . 'upload_display_example' . DS . 'images' . DS;
return $relative = './images' . DS;
}

if (isset($_POST['submit'])) {

$tmp_path = $_FILES['file_upload']['tmp_name'];
$photo_name = $_FILES['file_upload']['name'];
$photo_path = get_path() . $_FILES['file_upload']['name'];

if (move_uploaded_file($tmp_path, $photo_path)) {
header("Location: display_photo.php?img=$photo_name");
die();
} else {
echo "<script>alert('Cannot move photo to permanent location.');</script>";
}
}
?>

<form action="photo_upload.php" enctype="multipart/form-data" method="POST">
<p><input type="file" name="file_upload" /></p>
<p><input type="submit" name="submit" value="Upload" /></p>
</form>

display_photo.php

<?php
defined('DS') ? null : define('DS', DIRECTORY_SEPARATOR);

// Only $relative path will work
function get_path() {
//  return $absolute = $_SERVER['DOCUMENT_ROOT'] . DS . 'example' . DS . 'upload_display_example' . DS . 'images' . DS;
return $relative = './images' . DS;
}

if (isset($_GET['img'])) {
$photo_name = $_GET['img'];
$src = get_path() . $photo_name;
echo "<img src='$src' width='200' height='200' />";
}
?>
<br />
<br />
<a href="photo_upload.php">Upload a new photo</a>

0

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …