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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Не понимаю, ошибки 
V
    Опции темы
Shark
Дата 30.7.2015, 14:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 703
Регистрация: 18.6.2006
Где: Москва

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



Код

<?php
$user="Users";
$address="1234";
$datayear = date('Y');
$data = date('d-m-Y');
if(!file_exists($user))
    { mkdir($user, 0777); }
else
    { chdir($user); }

if(!file_exists($datayear))
    { 
        chdir($user);
        mkdir($datayear, 0777); 
    }
else
    { chdir($datayear); }

if(!file_exists($data))
    { 
        chdir($datayear);
        mkdir($data, 0777); 
    }
else
    { chdir($data); }

if(!file_exists($address))
    { 
        chdir($data);
        mkdir($address, 0777); 
    }
else
    { chdir($address); }
?>

Проблема в том, что изначально папки создаются без ошибки. Потом если поменять адрес, выскакивает ошибка (предупреждение):
Warning: chdir() [function.chdir]: No such file or directory (errno 2) in Z:\home\localhost\www\test\index.php on line 29
при этом, папка с названием адреса создается. Как избавится от ошибки?



--------------------
Смерть - это только начало... 
Агентство недвижимости Premial
PM MAIL WWW ICQ   Вверх
ksnk
Дата 30.7.2015, 14:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прохожий
****


Профиль
Группа: Комодератор
Сообщений: 6855
Регистрация: 13.4.2007
Где: СПб

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



Код

...
else
    { chdir($data); }
if(!file_exists($address))
    { 
        chdir($data);
        mkdir($address, 0777); 
    }

Тоесть сначала проверяется, есть ли каталог $data, он создается-переходится, а потом, на 29 строке есть еще одна команда перехода. Куда? В каталог $data/$data ?
Цитата(Shark @  30.7.2015,  14:01 Найти цитируемый пост)
 Как избавится от ошибки?

закомментиовать 29 строку?  smile 

Это сообщение отредактировал(а) ksnk - 30.7.2015, 14:09


--------------------
Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! user posted image
PM MAIL WWW Skype   Вверх
Shark
Дата 30.7.2015, 17:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 703
Регистрация: 18.6.2006
Где: Москва

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



ksnk, я все понимаю, но если закоментировать (или удалить строку 29), возникает другая проблема... если на этом пользователе каталоги не созданы, то в каталоге $datayear создается 2(!) каталога, с $data и $address

P.S. И почему в таком случае предупреждение выводится на 29 строке, а не раньше?

Это сообщение отредактировал(а) Shark - 30.7.2015, 17:07


--------------------
Смерть - это только начало... 
Агентство недвижимости Premial
PM MAIL WWW ICQ   Вверх
ksnk
Дата 30.7.2015, 18:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прохожий
****


Профиль
Группа: Комодератор
Сообщений: 6855
Регистрация: 13.4.2007
Где: СПб

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



Вот смотри на свой первый же условный оператор 
Код

$user="Users";
...
if(!file_exists($user))
    { mkdir($user, 0777); }
else
    { chdir($user); }


Если мы пойдем по первой ветке, то создадим каталог. И останемся в каталоге-родителе.
Ели пойдем  по второй ветке - перейдем в каталог.

Не видишь ошибку в логике?

ветка else лишняя?


--------------------
Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! user posted image
PM MAIL WWW Skype   Вверх
Shark
Дата 30.7.2015, 19:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 703
Регистрация: 18.6.2006
Где: Москва

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



ksnk, я не понимаю к чему ты клонишь smile.. прости...
Запусти вирутальный сервер.. и создай там index.php с кодом выше.. потом запусти файл, и посмотри, что будет в папке с этим файлом. Будет все правильно. После этого, поменяй $address и нажми F5, либо снова в адресной строке вбей адрес и нажми интер. Будет предупреждение!..
Вопросы: 
1. Раз он при смене $address ругается на chdir($data), почему, нет "ругани" на chdir($datayear) и предыдущие?
2. возьмем кусок, из-за которого появляется предупреждение:
Код

if(!file_exists($address))
    { 
        chdir($data);
        mkdir($address, 0777); 
    }
else
    { chdir($address); }

с 27 строки по 33
..
получается, если не существует каталога $address в каталоге $data (в который мы спокойно перешли в предыдущем шаге), то переходим в каталок $data (на который почему-то "ругается код") и создаем каталог с новым адресом.

P.S. Сорри за тупость... я бы не спрашивал, если бы он ругался на предыдущие каталоги при переходе в них

Это сообщение отредактировал(а) Shark - 30.7.2015, 21:03


--------------------
Смерть - это только начало... 
Агентство недвижимости Premial
PM MAIL WWW ICQ   Вверх
ksnk
Дата 30.7.2015, 21:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прохожий
****


Профиль
Группа: Комодератор
Сообщений: 6855
Регистрация: 13.4.2007
Где: СПб

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



Код

$user="Users";
...
if(!file_exists($user))
    { mkdir($user, 0777); }
chdir($user);

Вот я переписал кусок как он , imho, должен был быть. Чем он отличается от того, что был?

К 29-й строке, на которой делается попытка chdir, УЖЕ был переход в этот каталог на строке 25. 



--------------------
Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! user posted image
PM MAIL WWW Skype   Вверх
Shark
Дата 31.7.2015, 06:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 703
Регистрация: 18.6.2006
Где: Москва

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



По твоей подсказке
Цитата

К 29-й строке, на которой делается попытка chdir, УЖЕ был переход в этот каталог на строке 25. 

переписал код так:
Код

<?php
$user="Users";
$address="10rtyjyd2";
$datayear = date('Y');
$data = date('d-m-Y');
if(!file_exists($user))
    { 
        mkdir($user, 0777);
        chdir($user);
    }
else
    { chdir($user); }

if(!file_exists($datayear))
    { 
        mkdir($datayear, 0777); 
        chdir($datayear);
    }
else
    { chdir($datayear); }

if(!file_exists($data))
    { 
        mkdir($data, 0777); 
        chdir($data);
    }
else
    { chdir($data); }

if(!file_exists($address))
    { 
        mkdir($address, 0777); 
        chdir($address); 
    }
else
    { chdir($address); }

?>

и все стало прекрасно работать.


--------------------
Смерть - это только начало... 
Агентство недвижимости Premial
PM MAIL WWW ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

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

Важно:

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

Внимание:

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

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

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


 




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


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

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