каталог уровнем выше. ПХП.

WoWeb Hunter

Некто
if(copy('folder1/'.$variableX['img1'],'/img.sitename.com/public_folder/folder2/'.$variableX['name2'].'.gif')) {

Проблема: изображение не копируется из folder1 в folder2.

Причина: folder1 находится в корне каталога где исполняется код. folder2 находится на сабдомене, т.е. в другом каталоге.

Структура каталогов на сервере:

folder1 находится в /home/***/sitename.com/public_folder/folder1 или ראשי
folder2 находится в /home/***/img.sitename.com/public_folder/ или http://img.sitename.com

../ судя по мануалам - исполнение из папки уровнем выше. вообщем гадал на кофейной гуще, добавлял ../- прописывал столько сколько папок уровнем выше. писал без ../ и т.д. осталось разве что написать ..../ где количество точек = количеству папок уровнем выше. Неужели конфликтует из-за того что название папки совпадает с доменом?
 

Insallah

Раздолбай
📜
💎
  • Золотая медаль
Конфликтовать может банально по причине того, что сайт считает папку со своим именем — корневой. А твои точки пытаются выйти за пределы корневой папки.
 

Furilen

Интересующийся
📜
if(copy('public_folder/folder1/'.$variableX['img1'],'/img.sitename.com/public_folder/folder2/'.$variableX['name2'].'.gif'))
Попробуй так. чем черт не шутит) ну и тот же вариант только с точками. и права на папки попробуй ради эксперемента 777.
 

Furilen

Интересующийся
📜
и еще. Папки sitename.com и img.sitename.com лежат в одном каталоге?
 

Bayer

Специалист
⚖️
🏆
📜
💎
  • Надмозг
права на папку 777 , 2 точки ... 2010 ?

И так делаем такую штуку:
1. Создаём 2 массива с путём до первой и второй картинки - (в твоём случаем это так) :
$file = '/home/***/sitename.com/public_folder/folder1/"'.$variableX['img1'].'"';
$newfile = '/home/***/img.sitename.com/public_folder/folder2/"'.$variableX['name2'].'".gif ';
2. Дальше мы прописываем функцию копирования :
if (!copy($file, $newfile)) {
3. Дело сделано , можем наслаждаться и пить кофе! =)

P.S. проверь массив $variableX . Либо ошибка либо так и должно быть но в первом случае у тебя идёт выбор из строки img1 , а во втором name2 и уже появляется формат картинки.
 

WoWeb Hunter

Некто
Конфликтовать может банально по причине того, что сайт считает папку со своим именем — корневой. А твои точки пытаются выйти за пределы корневой папки.
походу именно так и происходит. в мануалах на различных сайтах советуют писать абсолютный путь. абс. путь я уточнил у хостера.
if(copy('public_folder/folder1/'.$variableX['img1'],'/img.sitename.com/public_folder/folder2/'.$variableX['name2'].'.gif'))
Попробуй так. чем черт не шутит) ну и тот же вариант только с точками. и права на папки попробуй ради эксперемента 777.
пробовал. абс. путь для первой папки и без абс. путей - все пашет, потому-что папка в корне "сайта". проблема со второй папкой, которая "вне сайта". 777 - это паблик права, почти как фтп публичный. но и все равно, делал - не помогает.
и еще. Папки sitename.com и img.sitename.com лежат в одном каталоге?
хоум/ввв/папка1, папка2/паблик/индекс пхп

где папка 1 и папка2 - разные домены. Т.е. ответ на твой вопрос - да.
права на папку 777 , 2 точки ... 2010 ?

И так делаем такую штуку:
1. Создаём 2 массива с путём до первой и второй картинки - (в твоём случаем это так) :
$file = '/home/***/sitename.com/public_folder/folder1/"'.$variableX['img1'].'"';
$newfile = '/home/***/img.sitename.com/public_folder/folder2/"'.$variableX['name2'].'".gif ';
2. Дальше мы прописываем функцию копирования :
if (!copy($file, $newfile)) {
3. Дело сделано , можем наслаждаться и пить кофе! =)

P.S. проверь массив $variableX . Либо ошибка либо так и должно быть но в первом случае у тебя идёт выбор из строки img1 , а во втором name2 и уже появляется формат картинки.
попробую сделать как ты сказал. если не поможет:

запихну папку2 в папку1, в таком случае проблем с копированием нет. а сабдомен пропишу внутрь папки1, на папку2. Надо будет узнать у хостера как это сделать.
 

RoBoT

Некто
📜
Код:
<?php
try {
    // Поднимаемся на два каталога выше относительно текущего каталога запуска скрипта
    $dir = realpath(__DIR__ .'/../../img.sitename.com');
    if(!is_writable($dir)) {
           throw new Exception($dir .' - не доступен для записи или не существует');
    }

    $filePath   = __DIR__ .'/folder1/' . $variableX['img1'];
    $newPath = $dir .'/folder2/'. $variableX['name2'] .'.gif';
    if (!copy($filePath, $newPath)) {
       throw new Exception('Ошибка копирования');
    }
  
    die('Успешное копирование');

} catch (Exception $e) {
    die($e->getMessage());
}
Запуск скрипта из каталога sitename.com/public_folder/
 
Последнее редактирование:

WoWeb Hunter

Некто
Код:
<?php
try {
    // Поднимаемся на два каталога выше относительно текущего каталога запуска скрипта
    $dir = realpath(__DIR__ .'/../../img.sitename.com');
    if(!is_writable($dir)) {
           throw new Exception($dir .' - не доступен для записи или не существует');
    }

    $filePath   = __DIR__ .'/folder1/' . $variableX['img1'];
    $newPath = $dir .'/folder2/'. $variableX['name2'] .'.gif';
    if (!copy($filePath, $newPath)) {
       throw new Exception('Ошибка копирования');
    }
 
    die('Успешное копирование');

} catch (Exception $e) {
    die($e->getMessage());
}
Запуск скрипта из каталога sitename.com/public_folder/
видел в мануалах, однако вот что пишут в офф. мануале:

Директория файла. Если используется внутри подключаемого файла, то возвращается директория этого файла. Это эквивалентно вызову dirname(__FILE__). Возвращаемое имя директории не оканчивается на слеш, за исключением корневой директории.
 

WoWeb Hunter

Некто
ну и бред.

$ImgRealPathNew = '/home/admin/web/****/*****/i/clan';
if(copy('clan_prw/'.$cl['img1'],$ImgRealPathNew.$cl['name2'].'.gif')) {

Ошибку скрипт не выдает, однако в папке пусто...
 

Insallah

Раздолбай
📜
💎
  • Золотая медаль
Вместо того, чтобы бояться ошибиться в полном пути, попробуй подставить $_SERVER['DOCUMENT_ROOT'].
Как минимум сделай ему эхо, а потом от этого пляши. Не удивлюсь, если у тебя на домене и субдомене суперглобальные переменные — разные. Если да — полный путь тебе в помощь.
 

RoBoT

Некто
📜
видел в мануалах, однако вот что пишут в офф. мануале:
Что значит эта фраза, вы думаете я не помню, что пишут в офф документации?

Темболее в чем проблема если запуск скрипта происходит из каталога /home/***/sitename.com/public_folder/
К примеру файл /home/***/sitename.com/public_folder/move.php
Константа __DIR__ будет равна /home/***/sitename.com/public_folder/, относительного этого каталога, каталог img.sitename.com находится на два уровня выше, следственно realpath(__DIR__ .'/../../img.sitename.com') должен выдать путь /home/***/img.sitename.com/, метод is_writeable проверит разрешение на запись в каталог относительно текущего положения исполняемого скрипта....
 

Silver Soft

Некто
📜
Понимаю, что уже вопрос решен, но отвечу.

Константа __DIR__ будет равна директории откуда выполняется скрипт. Намного лучше использовать суперглобальный массив $_SERVER['DOCUMENT_ROOT'].
 

Insallah

Раздолбай
📜
💎
  • Золотая медаль
Это такое новое развлечение — писать то же самое, что писали год назад, предлагая те же самые варианты, только от своего имени? :LOL:
 
Внимание! Эта тема устарела на 526 дней.
Тут обсуждать нечего, лучше создай новую тему. Конечно, если очень-очень нужно (например хочешь ответить на древний вопрос), то отвечай. Но помни: некропост — зло, а модератор не дремлет!
Сверху