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
Форумы портала PHP.SU :: Версия для печати :: Ошибка при определении файла
Форумы портала PHP.SU » PHP » Программирование на PHP » Ошибка при определении файла

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

1. Mister - 21 Апреля, 2010 - 07:48:29 - перейти к сообщению
Проблема подобная как и с выводом из CSV файла в другой теме, раньше всё работало нормально, в т.ч. и на старом хостинге, теперь не работает.

Сам скрипт сначала определяет создан каталог, а потом если каталог создан, то записывает туда закачанный файл, но при выполнении выдаёт ошибку:

Warning: mkdir() [function.mkdir]: File exists in /home/p3326/www/suhinichi-online .ru/zakaz/admin/add.php on line 90

Warning: Cannot modify header information - headers already sent by (output started at /home/p3326/www/suhinichi-online.ru/zakaz/admin/index.php:90) in /home/p3326/www/suhinichi-online .ru/zakaz/admin/add.php on line 110


Код:
PHP:
скопировать код в буфер обмена
  1.                 if (!file_exists('../$month'))
  2.                         {
  3. 90                      mkdir("../$month", 0777);
  4. 91                      //$month = "fdgh";
  5. 92                      }
  6. 93              if ((copy($_FILES['uploadfile']['tmp_name'], $path)))
  7. 94                      {
  8. 95                      unlink($_FILES['uploadfile']['tmp_name']);
  9. 96                      chmod($path, 0644);
  10. 97                      } else
  11. 98                      {
  12. 99                      $error = "<b>Ошибка! Файл не передан серверу.<b>";
  13. 100                     }
  14. 101             $size = floor(($_FILES['uploadfile']['size'])/1024);
  15. 102             $izv_date = date("Y-m-d");
  16. 103             $insert_query = mysql_query("INSERT INTO meropr VALUES (NULL , '$meropr' , '$path' , '$size' , '$ext' , '$dc' , '$izv_date');");
  17. 104             //include("header.tpl");
  18. 105-108 комментарии
  19. 109             unset ($_REQUEST['upload']);
  20. 110             header("Location: index.php?done=view");               
  21. 111             exit();

Подскажите пожалуйста, что делаю не так? на локальном компе всё работает и на другом хостинге тоже.
2. Мелкий - 21 Апреля, 2010 - 09:52:25 - перейти к сообщению
if (!file_exists('../$month'))
так вы преверяете наличие директории ../$month, а не того значения, что будет в этой переменной, в одиночных кавычках подстановки переменных не происходит.
3. Mister - 21 Апреля, 2010 - 11:37:24 - перейти к сообщению
Да да, именно идёт проверка наличия такого каталога. $month это переменная содержащая название каталога. Но почему-то он говорит, что каталог не найден и дальше всё не работает.
4. JustUserR - 21 Апреля, 2010 - 13:50:25 - перейти к сообщению
Mister пишет:
Но почему-то он говорит, что каталог не найден и дальше всё не работает.
Может быть две причины - или basedir не соответствует пути где лежит текущий PHP-скрипт или нет прав на чтения данного каталога (А если нет прав на исполнения не нельзя получить список файлов в каталоге)
5. AdMeen - 21 Апреля, 2010 - 14:02:30 - перейти к сообщению
Mister пишет:
Да да, именно идёт проверка наличия такого каталога. $month это переменная содержащая название каталога. Но почему-то он говорит, что каталог не найден и дальше всё не работает.


вам же сказали '../$month' это именно '../$month', вне зависимости от того что у вас там в переменной. исправьте на "../$month" и будет вам счастье.
6. JustUserR - 21 Апреля, 2010 - 14:09:55 - перейти к сообщению
Одиночные кавычки конечно не подставляют значения переменной Если очень хотити можете сделать chdir в родительский каталог и не использовать подстановку значения из строки
7. Мелкий - 21 Апреля, 2010 - 14:32:10 - перейти к сообщению
Mister пишет:
Но почему-то он говорит, что каталог не найден и дальше всё не работает.

сделайте

сильно удивитесь результату Подмигивание
8. Mister - 21 Апреля, 2010 - 14:55:29 - перейти к сообщению
Блин, бывает же такое! Одна ошибка ушла, теперь говорит что у меня с заголовками что-то не так.
PHP:
скопировать код в буфер обмена
  1. 109             header("Location: index.php?done=view");

Warning: Cannot modify header information - headers already sent by (output started at /home/p3326/www/suhinichi-online.ru/zakaz/admin/index.php:90) in /home/p3326/www/suhinichi-online .ru/zakaz/admin/add_doc.php on line 109
и дальше работа скрипта останавливается.

Повторюсь, раньше в другой версии работало всё идеально.
9. CenapaTop - 21 Апреля, 2010 - 15:11:23 - перейти к сообщению
В 90 строке сделан вывод в браузер.
10. Mister - 21 Апреля, 2010 - 16:53:47 - перейти к сообщению
CenapaTop пишет:
В 90 строке сделан вывод в браузер.

Это ещё почему это?
11. JustUserR - 21 Апреля, 2010 - 17:20:54 - перейти к сообщению
Mister В таком случае если проект небольшой то желательно пересмотреть его архитектуру и сделать так чтобы заголовки всегда выводились вначала - но если изменять очень много то используйте буферизацию или для данного случая удобнее использовать JS-перенаправление
Помните что причиной вывода может быть не только echo но и любой символ между ?> <?php или до и после них
12. Mister - 21 Апреля, 2010 - 17:51:51 - перейти к сообщению
Проверил, header -ов много и перед ними местами кое-где выводятся данные.

Теперь надо подумать, что написать вместо них, чтобы также переадресация была.
13. JustUserR - 22 Апреля, 2010 - 13:23:50 - перейти к сообщению
Mister пишет:
Проверил, header -ов много и перед ними местами кое-где выводятся данные.
Теперь надо подумать, что написать вместо них, чтобы также переадресация была.
Самый удобный и несложный способ заключается в использовании JS-скрипта который будет выполнять перенаправление на нужную страницу
Можно использовать следующий JS-скрипт для выполнения такого перенаправления - он удобен тем что не дожидается полной загрузки страницы - и при этом запускается когда JS-скриптинг уже загружен
CODE (html):
скопировать код в буфер обмена
  1. <script>
  2. window.url_redir="http://someurl"
  3. window.redir=function() {window.location.href=url_redir}
  4. window.setTimeout("redir()",100)
  5. </script>
Можно дополнить его автоматическим определенем ткущего хоста при перенаправлении - или к примеру использовать тег <meta>

 

Powered by ExBB FM 1.0 RC1