Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: В чем подвох chdir() и opendir()
 
 автор: Legenda   (02.05.2010 в 13:07)   письмо автору
 
 

Тема в следующем, тестирую скриптик на Денвере и напоролся на такую штуку. При вызове функции:


<?php 
...
opendir('img');
...
closedir('img');
...
?>


Дескриптор каталога не меняется, а так и остается в корневом каталоге, а на сервере работает.
В то же время, при смене каталога таким макаром:


<?php
...
chdir("img");
...
chdir("../");
...
?>


Все в норме !!! и где тут подвох-то... или я где ступил...

  Ответить  
 
 автор: sim5   (02.05.2010 в 13:16)   письмо автору
 
   для: Legenda   (02.05.2010 в 13:07)
 

closedir(resource dir_handle) - закрывает поток директории.
chdir(string directory) - изменяет текущую директорию.

  Ответить  
 
 автор: Legenda   (02.05.2010 в 13:22)   письмо автору
 
   для: sim5   (02.05.2010 в 13:16)
 

Это понятно, а почему не пашет на Денвере - вот в чем вопрос!

  Ответить  
 
 автор: sim5   (02.05.2010 в 13:23)   письмо автору
 
   для: Legenda   (02.05.2010 в 13:22)
 

Что именно не пашет?

  Ответить  
 
 автор: Legenda   (02.05.2010 в 13:23)   письмо автору
 
   для: sim5   (02.05.2010 в 13:23)
 

Ну директория не меняется...
Как был в корне, так там и остаюсь

  Ответить  
 
 автор: sim5   (02.05.2010 в 13:26)   письмо автору
 
   для: Legenda   (02.05.2010 в 13:23)
 

Значит вы не поняли, хотя пишите, что понятно - closedir не меняет директорию, она закрывает поток, ранее открытый opendir, проще говоря высвобождает ресурс.

  Ответить  
 
 автор: Legenda   (02.05.2010 в 13:30)   письмо автору
 
   для: sim5   (02.05.2010 в 13:26)
 

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

Вот кусок кода, если создавать изображение так:


<?php
...
imagejpeg($thumb'img/'.$imgname$quality); 
...
?>


То получается файл в корне, с именем - img/img.jpg
А нужно сразу кидать его в папку img

  Ответить  
 
 автор: sim5   (02.05.2010 в 13:36)   письмо автору
 
   для: Legenda   (02.05.2010 в 13:30)
 

А зачем тогда вам opendir? Вы не понимаете разницы между этой функцией и chdir. Да и для записи файла достаточно указать путь включающий директорию.
Читайте внимательно мануал:

opendir - возвращает дескриптор директории, используемый в последующих вызовах closedir(), readdir() и rewinddir().

  Ответить  
 
 автор: Legenda   (02.05.2010 в 13:46)   письмо автору
 
   для: sim5   (02.05.2010 в 13:36)
 

Да но если просто указать как в примере выше, файл не падает в директорию img вот в чем проблема

  Ответить  
 
 автор: sim5   (02.05.2010 в 13:51)   письмо автору
 
   для: Legenda   (02.05.2010 в 13:46)
 

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

  Ответить  
 
 автор: Legenda   (02.05.2010 в 13:54)   письмо автору
 
   для: sim5   (02.05.2010 в 13:51)
 

Тестирую на Денвере, там пишется в любую директорию...

  Ответить  
 
 автор: sim5   (02.05.2010 в 13:56)   письмо автору
 
   для: Legenda   (02.05.2010 в 13:54)
 

Пишется в любую не потому, что Денвер, а потому, что Windows.
Вывод ошибок лень включить?

  Ответить  
 
 автор: Gubichev   (02.05.2010 в 13:27)   письмо автору
 
   для: Legenda   (02.05.2010 в 13:07)
 

Opendir() только открывает каталог, но не переходит в него, а Chdir() именно переходит в определённый каталог.

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования