[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Проблема при передаче/загрузке файлов на сервер.
SarPHP
Итак, не дают покоя мне две проблемы. Смоделируем ситуацию:


1. Однодоменная передача/загрузка данных.
В корневой папке сайта находится папка "controls", в ней хранится исполнительный файл "upload.php", содержащий в себе скрипт(*) по загрузке какого-нибудь файла. Так вот, возникают проблемы при указании пути, куда нужно сохранить файл, когда исполнительный файл и папка для сохранения загружаемого файла находятся на разных уровнях. В нашем примере, исполнительный файл находится в папке "controls", а папка для сохранения файлов "mainfiles".
А в другом случае, в папку [controlfiles][/controlfiles] всё загружается скриптом(*) на "ура".
Вопрос: какой путь должна хранить переменная $direct_t в скрипте(*), чтобы загружать файлы в папку "mainfiles"?


[корневая папка сайта]

[controls]
-upload.php-
[controlfiles]..[/controlfiles]
[/controls]

[mainfiles]..[/mainfiles]

[/корневая папка сайта]



Код скрипта(*):

if (!empty($_FILES['filesupload']['name']))
{
$direct_t = 'controlfiles/';
$failik_t = $_FILES["filesupload"]["name"];
$mource_t = $_FILES["filesupload"]["tmp_name"];
$marget_t = $direct_t.$failik_t;
copy($mource_t,$marget_t);
@rename($marget_t,$direct_t.$dates.$failik_t);
$newlink = $dates.$failik_t;
}
else
{
$newlink = $linkaddress;
}



2. Межподдоменная передача/загрузка данных.
Схожая ситуация с пунктом №1. Исполнительный файл "upload.php" и папка для хранения файлов "mainfiles" находятся на разных поддоменах одного сайта.
Вопрос тот же, какой путь будет хранить переменная $direct_t в вышеуказанном скрипте(*). Пробовал указать путь: $direct_t = 'http://poddomen2.site.com/mainfiles/'. Не помогает, скрипт выдает ошибку. Есть догадка, что у исполнительного файла нет прав на такую операцию. Пробовал менять права у папок, не помогает.


[поддомен_1] /* например, poddomen1.site.com */
-upload.php-
[/поддомен_1]


[поддомен_2] /* например, poddomen2.site.com */
[mainfiles]..[/mainfiles]
[/поддомен_2]




Спустя 38 минут, 11 секунд (11.10.2010 - 22:52) waldicom написал(а):
В первом случае как вариант можно использовать полные пути.
Во втором:
$direct_t = 'http://poddomen2.site.com/mainfiles/'
так не пойдет, нужно указывать путь в файловой системе

Спустя 3 часа, 54 минуты, 16 секунд (12.10.2010 - 02:47) SarPHP написал(а):
waldicom, прописать полный путь я пробовал (например $direct_t = 'http://site.com/mainfiles/'), это первое что мне пришло в голову, когда я столкнулся с этой проблемой.. в итоге не помогало..
в общем, с первым случаем я сам доразобрался, надо было указать следующий путь:
$direct_t = '../mainfiles/';

Цитата

Во втором:
$direct_t = 'http://poddomen2.site.com/mainfiles/'
так не пойдет, нужно указывать путь в файловой системе


что за путь? вот тут поподробней, если можно smile.gif

Спустя 2 часа, 6 минут, 22 секунды (12.10.2010 - 04:53) arvitaly написал(а):
У доменов иногда настраивается open_basedir - путь с которого и выше имеет доступ домен. В таком случае домен обычно имеет доступ только к своей папке.
Вывод: если так настроено - то либо менять open_basedir либо никак.

Если open_basedir нету -тогда так же как и в первом варианте

../../и так далее

В этом случае если будут проблемы копируйте сюда ошибку


_____________
Вольный веб-дизайнер, идейщик с постоянным чувством информационного голода; когда знания ценнее денег - когда узнаешь новое и уважаешь в прошлое уходящее..
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2025 Invision Power Services, Inc.