Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Помогите разобраться с формой отправки файлов..

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (2): [1] 2 »   

> Описание: не работает скрипт(((
relight
Отправлено: 06 Апреля, 2011 - 12:16:11
Post Id


Новичок


Покинул форум
Сообщений всего: 18
Дата рег-ции: Апр. 2011  


Помог: 0 раз(а)




Здравствуйте! не могу понять почему скрипт не работает! его я взял из учебника..
При отправке файла выдает "Ошибка"..
PHP:
скопировать код в буфер обмена
  1.  
  2. <?
  3. if (isset($_FILES['file_name'])){
  4.     if ($_FILES['file_name']['error'] == 0 &&
  5.     $_FILES['file_name']['size'] > 0) {
  6.         $path = "C:\\Server\\Аpache 2\\htdocs\\";
  7.         $path .= basename($_FILES['file_name']['name']);
  8.         if (@move_uploaded_file($_FILES['file_name']['tmp_name'], $path)){
  9.             echo('Файл успешно загружен');
  10.         }
  11.         else {
  12.             echo("Ошибка");
  13.         }
  14.        
  15.     }
  16.     echo("Ошибка");
  17.            
  18. }
  19. ?>
  20.  
 
 Top
Мелкий Супермодератор
Отправлено: 06 Апреля, 2011 - 12:48:49
Post Id



Активный участник


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


Помог: 618 раз(а)




phpfaq.ru/debug Что ещё можно сказать...


-----
PostgreSQL DBA
 
 Top
relight
Отправлено: 06 Апреля, 2011 - 13:08:21
Post Id


Новичок


Покинул форум
Сообщений всего: 18
Дата рег-ции: Апр. 2011  


Помог: 0 раз(а)




посмотрел массив $_FILES
показало Array ( [file_name] => Array ( [name] => a_6d384b2a.jpg [type] => image/jpeg [tmp_name] => C:\Server\php\tmp\php6A84.tmp [error] => 0 [size] => 19102 ) )

[error]=>0, ошибок нет, что тогда может быть?
 
 Top
Zuldek
Отправлено: 06 Апреля, 2011 - 13:15:07
Post Id


Постоянный участник


Покинул форум
Сообщений всего: 2122
Дата рег-ции: Июнь 2010  


Помог: 50 раз(а)




Цитата:
C:\\Server\\Аpache 2\\htdocs\\
нестандартная запись пути Улыбка

(Отредактировано автором: 06 Апреля, 2011 - 13:18:13)

 
 Top
Мелкий Супермодератор
Отправлено: 06 Апреля, 2011 - 13:18:10
Post Id



Активный участник


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


Помог: 618 раз(а)




Читайте статью ещё раз. Обратите внимание на "быстрые рекомендации" п.1 и строку 8 вашего скрипта.
(Добавление)
Zuldek пишет:
нестандартная запись пути

Если на хосте:
0) винда
1) указанный путь существует
2) веб-сервер туда может писать
То будет работать. Винды в качестве разделителя пути используют как / так и \, но последний необходимо экранировать, т.к. это спецсимвол в PHP.


-----
PostgreSQL DBA
 
 Top
relight
Отправлено: 06 Апреля, 2011 - 13:31:03
Post Id


Новичок


Покинул форум
Сообщений всего: 18
Дата рег-ции: Апр. 2011  


Помог: 0 раз(а)




убрал @ в 8 строке, и написал в начале скрипта


вывело:

Warning: move_uploaded_file( C:\Server\Аpache 2\htdocs\ x_94cf59dc.jpg) [function.move-uploaded-file]: failed to open stream: Invalid argument in C:\Server\Apache 2\htdocs\file.php on line 8

Warning: move_uploaded_file() [function.move-uploaded-file]: Unable to move 'C:\Server\php\tmp\phpC69C.tmp' to ' C:\Server\Аpache 2\htdocs\ x_94cf59dc.jpg' in C:\Server\Apache 2\htdocs\file.php on line 8


как решить проблему? путь правильный, перепроверил не один раз((
 
 Top
Zuldek
Отправлено: 06 Апреля, 2011 - 13:41:43
Post Id


Постоянный участник


Покинул форум
Сообщений всего: 2122
Дата рег-ции: Июнь 2010  


Помог: 50 раз(а)




relight пишет:
Unable to move 'C:\Server\php\tmp\phpC69C.tmp' to ' C:\Server\Аpache 2\htdocs\ x_94cf59dc.jpg' in C:\Server\Apache 2\htdocs\file.php on line 8
как решить проблему? путь правильный, перепроверил не один раз((

Сервер не хочет класть в \ x_94cf59dc.jpg, я бы тоже не смог Улыбка

upd. Вы пытаетесь скопировать в \ x_94cf59dc.jpg
$path это место куда вы пытаетесь скопировать файл. Выведите эту переменную и станет понятно.

(Отредактировано автором: 06 Апреля, 2011 - 14:31:22)

 
 Top
relight
Отправлено: 06 Апреля, 2011 - 13:43:52
Post Id


Новичок


Покинул форум
Сообщений всего: 18
Дата рег-ции: Апр. 2011  


Помог: 0 раз(а)




Zuldek, не могу понять, что не так сделал(((
 
 Top
LIME
Отправлено: 06 Апреля, 2011 - 14:23:38
Post Id


Активный участник


Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010  


Помог: 322 раз(а)




скажите а в 7 строке не мог пробел затесаться между
C: \ Server \ Аpache 2 \ htdocs\ и
x _ 94 cf59dc . jpg?
просьба ответить
 
 Top
relight
Отправлено: 06 Апреля, 2011 - 20:10:58
Post Id


Новичок


Покинул форум
Сообщений всего: 18
Дата рег-ции: Апр. 2011  


Помог: 0 раз(а)




Переписал скрипт используя пример с php.net, добавил проверку с помощью is_uploaded_file..
файл в tmp загружается, а дальше не хочет...(((
PHP:
скопировать код в буфер обмена
  1.  
  2. <?PHP
  3. $name = $_FILES["file_name"]["name"];
  4.  
  5. if (is_uploaded_file($_FILES["file_name"]["tmp_name"])) {
  6.    echo "Файл ". $name ." загружен в папку tmp успешно .\n";
  7. } else {
  8.    echo "Ошибка ";
  9.    
  10. }
  11.  
  12.     if ($_FILES["file_name"]["error"] == UPLOAD_ERR_OK) {
  13.         $tmp_name = $_FILES["file_name"]["tmp_name"];
  14.         move_uploaded_file($tmp_name, "C:\Server\Apache 2\htdocs\uploads");
  15.     }
  16.  
  17. ?>
  18.  


результат:

Файл a_6d384b2a.jpg загружен в папку tmp успешно .
Warning: move_uploaded_file() [function.move-uploaded-file]: The second argument to copy() function cannot be a directory in C:\Server\Apache 2\htdocs\file_t.php on line 14

Warning: move_uploaded_file() [function.move-uploaded-file]: Unable to move 'C:\Server\php\tmp\php2C2C.tmp' to 'C:\Server\Apache 2\htdocs\uploads' in C:\Server\Apache 2\htdocs\file_t.php on line 14

помогите исправить ошибку.

(Отредактировано автором: 06 Апреля, 2011 - 20:12:34)

 
 Top
DeepVarvar Супермодератор
Отправлено: 06 Апреля, 2011 - 20:14:50
Post Id



Активный участник


Покинул форум
Сообщений всего: 10377
Дата рег-ции: Дек. 2008  
Откуда: Альфа Центавра


Помог: 353 раз(а)




relight у вас php как CLI/CGI??? Или как модуль Apache?
Если второе, то указывайте относительный путь от корневой папки сайта. И не обратными слешами, а прямыми.
$path = "/uploads/";
Если не сработает - проверить права на каталог.
 
 Top
relight
Отправлено: 06 Апреля, 2011 - 20:38:07
Post Id


Новичок


Покинул форум
Сообщений всего: 18
Дата рег-ции: Апр. 2011  


Помог: 0 раз(а)




DeepVarvar, как узнать CLI/CGI или модуль?

Поменял путь на /uploads/ ошибку не выдает, но и файл не появляется..
если заношу путь в переменную, то в каталоге htdocs создается файл с именем переменной.
 
 Top
Мелкий Супермодератор
Отправлено: 06 Апреля, 2011 - 21:03:41
Post Id



Активный участник


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


Помог: 618 раз(а)




relight,
relight пишет:
The second argument to copy() function cannot be a directory

Переведите, что вам сказал скрипт и почитайте что требует move_uploaded_file вторым аргументом.

PS: странно, я думал \ в путях надо экранировать.

relight пишет:
Поменял путь на /uploads/ ошибку не выдает, но и файл не появляется..

Теперь осталось найти, где под виндами /.
Почитайте про относительные, абсолютные, виндовые и никсовые пути, пригодится.


-----
PostgreSQL DBA
 
 Top
relight
Отправлено: 06 Апреля, 2011 - 21:18:18
Post Id


Новичок


Покинул форум
Сообщений всего: 18
Дата рег-ции: Апр. 2011  


Помог: 0 раз(а)




Всем спасибо большое! все получилось!
поменял

файл загружается в папку htdocs, а как теперь сделать чтоб он загружался в uploads которая находится в htdocs?
вот мой код

PHP:
скопировать код в буфер обмена
  1.  
  2. <?
  3. ini_set('display_errors',1);
  4. error_reporting(E_ALL ^E_NOTICE);
  5. if (isset($_FILES["file_name"])){
  6.     if ($_FILES["file_name"]["error"] == 0) {
  7.         $path = '/uploads/';
  8.         $name = $_FILES["file_name"]["name"];
  9.         $tmp_name = $_FILES["file_name"]["tmp_name"];
  10.         //$path .=basename($_FILES['file_name']['name']);
  11.        
  12.   if (move_uploaded_file($tmp_name,$name))
  13. {
  14.           echo('Файл успешно загружен');
  15.         }
  16.         else {
  17.             echo("Ошибка");
  18.         }
  19.        
  20.     }
  21.     echo("Ошибка");
  22.  
  23.            
  24. }
  25.  
  26. ?>
  27.  
 
 Top
DeepVarvar Супермодератор
Отправлено: 07 Апреля, 2011 - 00:20:09
Post Id



Активный участник


Покинул форум
Сообщений всего: 10377
Дата рег-ции: Дек. 2008  
Откуда: Альфа Центавра


Помог: 353 раз(а)




Я вообще не понимаю - зачем весь этот гемор?
Искать какие-то пути, пусть сам пых думает...
PHP:
скопировать код в буфер обмена
  1. if (isset($_FILES['file']['tmp_name']) and $_FILES['file']['type'] == "text/plain") {
  2.     $filename = "текстовое_файло";
  3.     if (@copy($_FILES['file']['tmp_name'],"./uploads/".$filename.".txt")) {
  4.         unset($_FILES['file']);
  5.         echo "усё путём шеф";
  6.         }
  7.     else echo "нет прав на запись в каталог";
  8.     }
 
 Top
Страниц (2): [1] 2 »
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Программирование на PHP »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB