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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> относительные и абсолютные пути, внутри функции 
V
    Опции темы
supercelt
Дата 24.7.2009, 21:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 658
Регистрация: 25.8.2005

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



Код

//Создать новую папку
function create_new_folder($new_folder, $full_path)
{
$real_path = substr($full_path, strlen($_SERVER['DOCUMENT_ROOT'])+1);
//chdir($real_path);
 if(file_exists('../../../../../'.$real_path.'/'.$new_folder))
 {
 return false;
 }
 else
 {
  if(mkdir('../../../../../'.$real_path.'/'.$new_folder, 0775))
  {
  return true;
  }
  else
  {
  return false;
  }
 }
}


Это функция создания новой папки. 2 аргумента, первый - это название папки которуб надо создать, второй - полный путь где создавать папку. 

Так как эта функция находится в отдельном файле, который в свою очередь находится в каталогах библиотек и тд, получается следующее, примерно так: 

Там где надо создать папку: Z:/home/test.ru/www/admin/upload_dir
Там где исполняется этот скрипт: Z:/home/test.ru/www/libs/plugins/file/php/functions.php

Вот из-за этого в скрипте пришлось сделать много точек и слэшей. 
Скажите пожалуйста, можно ли как-нибудь эти точки и слеши убрать?. 
ПС И когда в пути стираешь Z: и оставляешь только /home...... то скрипт не работает
PM   Вверх
skyboy
Дата 25.7.2009, 00:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


неОпытный
****


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

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



Цитата(supercelt @  24.7.2009,  20:49 Найти цитируемый пост)
И когда в пути стираешь Z: и оставляешь только /home...... то скрипт не работает 

в *nix абсолютный путь начинается с "/". /home/some/someonemore/file.txt - корректный путь в *nix системе.
как должен windows интерпретировать "/home"? т.е. как по-твоему, он должен интепретировать? я вот даже теряюсь. относительные пути в windows начинаются с имени папки/файла(без слеша, естественно), аболютные - с имени диска. Как ты хочешь по имени, начинающемся со слеша, что-то открыть, представлять не берусь.
Цитата(supercelt @  24.7.2009,  20:49 Найти цитируемый пост)
Скажите пожалуйста, можно ли как-нибудь эти точки и слеши убрать?

три варианта:
1. указать абсолютный путь. естественно, совсем не вариант - при малейшей модификации/миграции код придется править в куче мест.
2. использовать chdir() для установки текущего каталога обработки в нужное тебе абсолютное значение. тоже не вариант - в каждой функции придется использовать chdir и при переносе/модификации тебе надо будет править код в куче мест, как и в варианте 1, разве что правок будет меньше - по правке на каждую функцию, а не сколько раз ты писал абсолютный путь.
3. Путь Джедая: создаешь переменную/константу/фунцкию, в которой хранится "огрызок" абсолютного пути и "достраиваешь" пути, исходя из этого "огрызка" - в случае необходимости надо будет на весь твой код сделать только одно исправление(если структура файлов сохранилась и изменилось только расположение всего дерева целиком):
Код

function getRoot()
{
 return 'Z:/home/html';
}
....
function create_new_folder($new_folder, $full_path)
{
....
 if(file_exists(getRoot() .$real_path.'/'.$new_folder))
....

PM MAIL   Вверх
Photon
Дата 25.7.2009, 03:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Злобный программер
**


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

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



Код

    function create_dir($new_folder) {
        $doc_root = $_SERVER['DOCUMENT_ROOT'];
        if ($doc_root[strlen($doc_root) -1] == '/')
            $doc_root = substr($doc_root,0,strlen($doc_root) - 1);
        if (file_exists($doc_root."/".$new_folder) === false) {
            mkdir($doc_root."/".$new_folder, 0777, true);
        }
        else
             return false;
    }
    create_dir('Temp/Internal/Shop');

Рабочая функция.  Правда, работает только начиная с PHP 5.0.0

Это сообщение отредактировал(а) Photon - 25.7.2009, 03:41


--------------------
With best regards..
PM MAIL ICQ Skype GTalk Jabber   Вверх
supercelt
Дата 25.7.2009, 22:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 658
Регистрация: 25.8.2005

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



спасибо всем)
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "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.0662 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


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

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