Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Загрузка файлов на сервер PHP, Изменение относительного пути 
V
    Опции темы
Luchi
Дата 21.8.2013, 13:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 18
Регистрация: 21.8.2012

Репутация: нет
Всего: нет



Доброго времени суток!
Сайт на бесплатном хостинге с доменом 3-го уровня
/home/user/public_html   (/public_html - корневая папка)

Код

echo '
<head>
<base href="//сайт" />
</head>
<body>';
echo $_REQUEST['submit'];
echo $_POST['submit'];
if ($_REQUEST['submit'] == 'Ok')
{
    // Каталог, в который мы будем принимать файл
    $uploaddir = './image/';
    $uploadfile = $uploaddir.basename($_FILES['foto']['name']);
    
    // Перемещаем файл из каталога для временного хранения файлов в новое место
    if (move_uploaded_file($_FILES['foto']['tmp_name'], $uploadfile))
    {
        echo '<h3>Файл успешно загружен на сервер</h3>';
    }
    else
    {
        echo '<h3>Ошибка! Не удалось загрузить файл на сервер!</h3>';
    }
}
else
{
    echo '
        <form method="POST" action="/" enctype=multipart/form-data>
            <input type="file" accept="image/*" name="foto" value="Ok" />
            <input type="submit" name="submit" value="Ok" />
        </form>
    ';
}
echo '</body>';


Картинки загружаются всегда в /public_html/image/

Вопросы:
1. Если код лежит в корневой папке /public_html/index.php, то картинки загружаются, если перенести этот код в папку 1 на директорию ниже public_html/1/ (внеся соответственно изменения в код), то не получается загрузить. В чем может быть причина?
Вот код с изменениями
Код

echo '
<head>
//здесь указывал href="//сайт" и href="//сайт/1"
<base href="//сайт" />
</head>
<body>';
echo $_REQUEST['submit'];
echo $_POST['submit'];
if ($_REQUEST['submit'] == 'Ok')
{
    // Каталог, в который мы будем принимать файл
    $uploaddir = '../image/'; //здесь указывал './image/' '/image/' 'сайт/image/' 'http://сайт/image/'
    $uploadfile = $uploaddir.basename($_FILES['foto']['name']);
    
    // Перемещаем файл из каталога для временного хранения файлов в новое место
    if (move_uploaded_file($_FILES['foto']['tmp_name'], $uploadfile))
    {
        echo '<h3>Файл успешно загружен на сервер</h3>';
    }
    else
    {
        echo '<h3>Ошибка! Не удалось загрузить файл на сервер!</h3>';
    }
}
else
{
    echo '
        <form method="POST" action="/1" enctype=multipart/form-data>
            <input type="file" accept="image/*" name="foto" value="Ok" />
            <input type="submit" name="submit" value="Ok" />
        </form>
    ';
}
echo '</body>';


2. Если код лежит в корневой папке /public_html/index.php, то глобальные переменные $_REQUEST['submit'] и $_POST['submit'] показываются, если перенести этот код в папку 1 на директорию ниже public_html/1/ (внеся соответственно изменения в код), то глобальные переменные не выводятся.

Я понимаю, что глобальные переменные не выводятся, а значит они null и условие if не может выполниться и картинка не закачивается на сервер. Это связано с указанием путей или с настройками сервера. В чем причина?
PM MAIL   Вверх
Sanchezzz
Дата 21.8.2013, 14:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1670
Регистрация: 19.11.2006
Где: Voronezh

Репутация: 41
Всего: 60



Все дело в путях укажите полный и убедитесь что папка создана и доступна для записи.

Например от файла конфига веб-приложения, если токовой имеется. 
Например таким способом:
у нас есть папка public_html/config где мы храним разные  файлы настройки например у нас есть файл который из этой папки подключается всегда.

Код

   $base_path = dirname(__FILE__)."/../";  //public_html
   $storage_path = dirname(__FILE__)."/../storage";  //public_html/storage




--------------------
Понравился ответ "+" по репе, не забываем закрывать тему, заказы в LS.
PM MAIL Skype GTalk   Вверх
Luchi
Дата 21.8.2013, 15:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 18
Регистрация: 21.8.2012

Репутация: нет
Всего: нет



Цитата
1. Если код лежит в корневой папке /public_html/index.php, то картинки загружаются...

Значит папка image создана и доступна для записи.

Файла конфига нет.

Такой код
Код

$base_path = dirname(__FILE__)."/../";

выдает /home/user/public_html/1/../
он его не обрабатывает, а просто складывает

Такой код
Код

$base_path = dirname(__FILE__)."../";

выдает /home/user/public_html/1../

Конечно бред, но проверено ради интереса
Код

$base_path = "/../".dirname(__FILE__);

выдает, как ожидаемо /..//home/user/public_html/1
PM MAIL   Вверх
Luchi
Дата 22.8.2013, 14:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 18
Регистрация: 21.8.2012

Репутация: нет
Всего: нет



Причина была в
Код

action="/1"


Адрес указываю так
Код

$uploaddir = $_SERVER['DOCUMENT_ROOT'].'/image/';


Без action в form работает в любых вариантах, как положено.
action в form указывает куда отправлять данные с form. Файл в любом случае поступит во временную папку tmp, а при перемещении его в другую папку с помощью move_uploaded_file не относится  к action. Если бы просто $_REQUEST['submit'] и $_POST['submit'] были пусты и условию не удовлетворяло, но выдает ошибку.
Кто может объяснить связь?

Это сообщение отредактировал(а) Luchi - 22.8.2013, 14:12
PM MAIL   Вверх
Fortop
Дата 23.8.2013, 09:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2200
Регистрация: 13.11.2007
Где: Донецк

Репутация: 20
Всего: 42



Цитата(Luchi @  21.8.2013,  15:20 Найти цитируемый пост)
выдает /home/user/public_html/1/../
он его не обрабатывает, а просто складывает

ну сделай же realpath() над тем что выдает

Добавлено через 43 секунды
И используй этот результат, если он не false, для move_uploaded_file()


--------------------
Мир это Я.
Живее всех живых.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.1592 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.