Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Общие вопросы > Полный/относительный путь


Автор: HackMan 28.8.2007, 23:00
Для того, что бы сохранить на сервере картинку - надо указывать полный путь ("/home/test1.ru/project/data/home/1.jpg"), а для того что бы отобразить картинку в браузере - первый вариант не работает, надо указывать относительный путь ("/project/data/home/1.jpg")
dirname($_SERVER['PHP_SELF']) возвращает "/project".
Как лучше всего решить данную проблему? Надо узнавать отдельно полный путь и отдельно путь относительно базовой директории сайта? Или это только в DENWER так, что dirname($_SERVER['PHP_SELF']) выдаёт относительный путь?
Вобщем, запутался  smile 

Вот код сохранения изображения
Код

imagejpeg($destination, $homedir . "/data/home/" . $filename, 70);


А вот код вставки этой картинки в браузер 
Код

<div align="center"><img src="<?php echo $homedir . "/data/home/" . $row['filename']?>"></div>


С конструкцией 
Код

$homedir = dirname($_SERVER['PHP_SELF']);

файл  отказывается сохраняться...

Автор: console 28.8.2007, 23:23
Цитата(HackMan @  28.8.2007,  22:00 Найти цитируемый пост)
надо указывать относительный путь ("/project/data/home/1.jpg")

Это относительный путь? Что-то новенькое...

Автор: HackMan 28.8.2007, 23:26
Ну это путь, относительно моего виртуального сервера... А полный путь: Z:\home\test1.ru\www\project (/home/test1.ru/www/project)

Добавлено @ 23:27
Если я не прав - разъясните, пожалуйста, я сам уже сильно запутался - спать охота...  smile 

Автор: console 28.8.2007, 23:28
Цитата(HackMan @  28.8.2007,  22:00 Найти цитируемый пост)
Для того, что бы сохранить на сервере картинку - надо указывать полный путь

Каким образом сохранить и почему именно полный путь?

Автор: HackMan 28.8.2007, 23:33
Я принимаю от пользователя картинку и сразу же её обрабатываю
Код

...
  $tempfile = $_FILES['photo']['tmp_name'];
  $filename = md5(microtime()).".jpg";
...
  $source = imagecreatefromjpeg($tempfile);
...
  imagejpeg($destination, "{$homedir}/data/home/{$filename}", 70);
...


В $homedir у меня получается "/project". Таким образом картинка не сохраняется - пишет: "не могу сохранить по такому-то пути", а сохраняет только если перед этим "/project" будет ещё указано "/home/test1.ru/www"

Автор: console 29.8.2007, 00:03
На http://php.net/imagejpeg есть примеры с относительным путем в imagejpeg()

Автор: HackMan 29.8.2007, 00:11
Спасибо!
Вопрос решён. Причина - как всегда, простая невнимательность...  smile 
У меня код обработки картинки был в скрипте, который подключается к главному. Главный скрипт в корневой директории, а подключаемый - на один уровень ниже...
Приставка "../" послужила решением данной проблемы  smile 

Код

imagejpeg($destination, "../{$homedir}/data/home/{$filename}", 70);

Автор: anurbol 29.8.2007, 07:39
Чтобы такого неслучалось я обычно использую echo getcwd();

Автор: reich 29.8.2007, 09:35
Не знаю, в тему мое сообщение или нет, но я делаю конфиг, в котором указывается путь от корня диска к папке с сайтом(например) и потом прибавляю этот путь ко всему, что надо подключить.(кроме css и картинок, то есть то, что может увидеть юзер в html коде страницы)
вот пример:
файл конфигурации
Код

//configuration.php
$CONFIG['ABSOLUTE_PATH'] = "C:/www/example";

файл, в который подключает что-то
Код

//some_file.php
require_once($CONFIG['ABSOLUTE_PATH'].'/lib/scritp.php');

Потом, есть папка template, в которой хранятся html коды, css и картинки(template/img)
и подключение картинок выглядит так:
Код

<img src="./template/img/pict.jpg" />

--------------------------
Вот еще вспомнил, что можно в конфиге прописать URL сайта
Код

//configuration.php
$CONFIG['SITE_URL'] = "http://example.com";

и потом, при вставке картинки можно делать так:
Код

<img src="<?php echo $CONFIG['SITE_URL']; ?>/templates/img/pict.jpg";


 smile 

Автор: console 29.8.2007, 17:59
Статичный конфиг, а если перенести в другую папку... все

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)