0 / 0 / 0
Регистрация: 22.10.2012
Сообщений: 31
1

Не пойму почему не работает move_uploaded_file()

17.12.2013, 15:58. Показов 18583. Ответов 15
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Первые шаги в php.. Загружаю методом POST файл и хочу его сохранить в папку на сервере, новый файл перетирает предыдущий.
Все время получаю ошибку. Не работает ни на домашнем компе с Денвером на виндовс, ни на сайте у хостера.

PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
<?php
 
$uploaddir = 'image/';
$uploadfile = $uploaddir . basename($_FILES['image000']['name']);
 
 
if (move_uploaded_file($_FILES['image000']['tmp_name'], $uploadfile)) {
    echo "\nOk.\n";
} else {
    echo "\nError!\n";
}
print_r($_FILES);
?>
Папка image создана в каталоге www.
print_r($_FILES) показывает что ошибок нет (== 0), размер файла ~0.5 МБ, показывает имя файла image000 и то что это octet-stream, то есть бинарный файл. Но всё время получаю ответ Error от этого кода.
Помогите разобраться пожалуйста.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
17.12.2013, 15:58
Ответы с готовыми решениями:

Не пойму почему не работает?
#include &quot;stdafx.h&quot; #include &lt;conio.h&gt; using namespace System; enum class Suit {Clubs,...

Не пойму почему не работает
Не пойму почему не работает полностью игра я нашел исходник игры и коечто добавил переделал и...

Не пойму почему не работает
Ответ просто не выводится и бесконечно просит ввести число #include&lt;stdio.h&gt; #include&lt;locale.h&gt;...

Не пойму, почему не работает
// ConsoleApplication1.cpp: определяет точку входа для консольного приложения. // #include...

15
365 / 372 / 89
Регистрация: 01.12.2013
Сообщений: 1,629
17.12.2013, 16:19 2
Цитата Сообщение от bt1024 Посмотреть сообщение
$uploaddir = 'image/';
указывайте нормальный путь, а не огрызок к текущей директории
0
PHP developer
259 / 157 / 26
Регистрация: 20.03.2013
Сообщений: 1,018
17.12.2013, 16:21 3
Цитата Сообщение от bt1024 Посмотреть сообщение
Помогите разобраться пожалуйста.
Какую ошибку пишет?
Попробуйте прописать полный путь к папке, ну какой он у Вас:
PHP
1
2
3
4
5
6
7
8
9
10
11
$uploaddir = '/home/localhost/www/image';
if(!is_dir($uploaddir)){
    mkdir($uploaddir);
    $uploadfile = $uploaddir . basename($_FILES['image000']['name']);
      if (move_uploaded_file($_FILES['image000']['tmp_name'], $uploadfile)) {
         echo "\nOk.\n";
      } else {
            echo "\nError!\n";
      }
print_r($_FILES);
}
попробуйте...
0
0 / 0 / 0
Регистрация: 22.10.2012
Сообщений: 31
17.12.2013, 16:30  [ТС] 4
Цитата Сообщение от ads Посмотреть сообщение
указывайте нормальный путь, а не огрызок к текущей директории
Так сделал потому что ранее писал функцию отображающую файлы в виде списка в браузере, писал это так:

PHP
1
2
3
4
5
if ($dir = opendir('img/')) {
        $for_open1=".bmp";
        $for_open2=".jpg";
.....
}
img - папка в каталоге www.

Я тут обнаружил что:
if(is_uploaded_file($_FILES['image000']['tmp_name'])){
echo "\nDownloaded.\n";
} else {
echo "\nError of download!\n";
}
тоже выдает ошибку, мир сошел с ума! Надо срочно его вернуть обратно..
Что это означает, почему is_uploaded_file тоже выдает ошибку? Код ошибки равен нулю в $_FILES
0
PHP developer
259 / 157 / 26
Регистрация: 20.03.2013
Сообщений: 1,018
17.12.2013, 16:41 5
Цитата Сообщение от bt1024 Посмотреть сообщение
мир сошел с ума!

Не по теме:

Это из раздела психиатрии, а не из раздела программирования



Давайте по делу, какую ошибку выдает, что пишет. Лог ошибок представьте!
0
0 / 0 / 0
Регистрация: 22.10.2012
Сообщений: 31
17.12.2013, 16:55  [ТС] 6
Цитата Сообщение от masik49 Посмотреть сообщение
Какую ошибку пишет?
Попробуйте прописать полный путь к папке, ну какой он у Вас:
...
попробуйте...
Ошибку пишет в смысле функция выдает FALSE и мой код показывает это, а почему возникает ошибка не знаю.

Попробовал с полными путями:
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<?php
$uploaddir = '/home/172.16.250.4/www/image';
$uploadfile = '';
 
if(is_uploaded_file($_FILES['image000']['tmp_name'])){
    echo "\nDownloaded.\n";
} else {
    echo "\nError of download!\n";
}
 
if(!is_dir($uploaddir)){
    mkdir($uploaddir);
}
$uploadfile = $uploaddir . basename($_FILES['image000']['name']);
if (move_uploaded_file($_FILES['image000']['tmp_name'], $uploadfile)) {
    echo "\nOk.\n";
}else{
    echo "\nError!\n";
}
 
print_r($_FILES);
print_r($uploadfile);
?>
Все равно ошибка.
Может это из-за старого денвера? Он монтируется как дополнительный Read Only диск V который просто копия папки на диске С. $_FILES показывает временный файл именно как лежащий на диске V. Логика подсказывает что разрабы должны были это учесть, но я тут пару дней бьюсь над этим вроде простым кодом.

Добавлено через 6 минут
Цитата Сообщение от masik49 Посмотреть сообщение

Не по теме:

Это из раздела психиатрии, а не из раздела программирования



Давайте по делу, какую ошибку выдает, что пишет. Лог ошибок представьте!
Боюсь показаться совсем чайником, но видимо это так, вот только нашел в сети где включить этот лог. Пробую.
0
PHP developer
259 / 157 / 26
Регистрация: 20.03.2013
Сообщений: 1,018
17.12.2013, 17:02 7
Цитата Сообщение от bt1024 Посмотреть сообщение
Он монтируется как дополнительный Read Only диск V который просто копия папки на диске С
Ваш диск V не копия диска C, а лишь копия папки с денвером.

Помоему Вы что то мудрите с кодом...Вы мой вариант пробовали??? Не пойму почему не работает move_uploaded_file()

Только за место локалхоста свою папку укажите. то беж
PHP
1
$uploaddir = '/home/172.16.250.4/www/image';
Добавлено через 2 минуты
Не пойму зачем Вы папку обозвали IP адресом??
0
365 / 372 / 89
Регистрация: 01.12.2013
Сообщений: 1,629
17.12.2013, 17:06 8
Цитата Сообщение от bt1024 Посмотреть сообщение
'/home/172.16.250.4/www/image';
в виндовс не бывает таких путей
попробуйте тупо сохранить на c:\..
0
0 / 0 / 0
Регистрация: 22.10.2012
Сообщений: 31
17.12.2013, 17:06  [ТС] 9
Цитата Сообщение от masik49 Посмотреть сообщение
Ваш диск V не копия диска C, а лишь копия папки с денвером.

Добавлено через 2 минуты
Не пойму зачем Вы папку обозвали IP адресом??
Это связано с доступом по сети, сайт доступен в сети по этому адресу (пока это для Андроида надо).

з.ы. с логом пока проблемы, не включается. Разбираюсь.


Кстати мне относительные пути в php нужны, так как разные пути у меня и на хосте. Что бы сайт был перемещабельным. Я думал папка www это есть корень сайта. Это не так?
0
365 / 372 / 89
Регистрация: 01.12.2013
Сообщений: 1,629
17.12.2013, 17:09 10
Цитата Сообщение от bt1024 Посмотреть сообщение
сайт доступен в сети по этому адресу (пока это для Андроида надо).
сеть и локальные пути - две большие разницы. Для сохранения нужно писать локальный желательно абсолютный путь
0
0 / 0 / 0
Регистрация: 22.10.2012
Сообщений: 31
17.12.2013, 17:14  [ТС] 11
Цитата Сообщение от masik49 Посмотреть сообщение
Ваш диск V не копия диска C, а лишь копия папки с денвером.

Помоему Вы что то мудрите с кодом...Вы мой вариант пробовали??? Не пойму почему не работает move_uploaded_file()
Да пробовал, вот его небольшая переделка: пост

Он переделан т.к. если $uploaddir существует то код сохранения файла не выполнится, переделка там минимальная.

Добавлено через 2 минуты
Цитата Сообщение от ads Посмотреть сообщение
сеть и локальные пути - две большие разницы. Для сохранения нужно писать локальный желательно абсолютный путь
В данном случае имя папки просто совпадает с IP адрессом машины. Для php это просто имя, такое же самое как и localhost.
0
365 / 372 / 89
Регистрация: 01.12.2013
Сообщений: 1,629
17.12.2013, 17:17 12
Цитата Сообщение от bt1024 Посмотреть сообщение
просто совпадает с IP адрессом машины
оно может с чем угодно совпадать, вот только в виндовс не бывает диска "/"
0
0 / 0 / 0
Регистрация: 22.10.2012
Сообщений: 31
17.12.2013, 17:56  [ТС] 13
Цитата Сообщение от ads Посмотреть сообщение
оно может с чем угодно совпадать, вот только в виндовс не бывает диска "/"
У виндовс не бывает, но мы "/" скармливаем php, а он с этим сам разбирается.
0
365 / 372 / 89
Регистрация: 01.12.2013
Сообщений: 1,629
17.12.2013, 17:59 14
Цитата Сообщение от bt1024 Посмотреть сообщение
а он с этим сам разбирается
нуну
0
0 / 0 / 0
Регистрация: 22.10.2012
Сообщений: 31
17.12.2013, 18:45  [ТС] 15
Цитата Сообщение от ads Посмотреть сообщение
нуну
Тем не менее это так, только что проверил.

--
Проблему решил, как всегда в таких простых случаях она оказывается совсем не там где ищешь. Спутал название файла и естественно функция не могла его найти.

В код добавил эти две строчки что бы видеть ошибки, с логом не получилось, не взлетело)). Собственно они и показали, что ошибка в названии файла.
Код
ini_set('display_errors','On');
error_reporting(E_ALL | E_STRICT);
После правки всё заработало. Всем спасибо за участие и помощь!
0
365 / 372 / 89
Регистрация: 01.12.2013
Сообщений: 1,629
17.12.2013, 20:12 16
Цитата Сообщение от bt1024 Посмотреть сообщение
Тем не менее это так, только что проверил.
блажен кто верует. везение это еще не закономерность
Цитата Сообщение от bt1024 Посмотреть сообщение
Спутал название файла
вам об этом твердили на двух страницах. лучше поздно чем никогда
0
17.12.2013, 20:12
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
17.12.2013, 20:12
Помогаю со студенческими работами здесь

не пойму почему не работает
есть код str = &quot;&lt;карта&gt;&lt;_2&gt;&lt;_1&gt;&lt;_0 x=&quot;1&quot; y=&quot;2&quot; z=&quot;3&quot; /&gt;&lt;_1 x=&quot;11&quot; y=&quot;22&quot; z=&quot;3&quot;...

Не пойму почему не работает ?
Sub task1() Dim x, y, y1 As Integer Dim str As String Лист1.Activate str = InputBox(&quot;введите...

Не пойму почему не работает программа
Написать логическую функцию, принимающую значения True, если в целом числе, являющимся единственным...

Не пойму почему не работает код?
Не пойму почему не работает код? package labor6.feladat1; import static...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
16
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru