2010-10-05 2 views
0

У меня есть сценарий, выполняющийся на промежуточном сайте, где он загружает изображение, создает каталог (если он существует) и загружает изображение в указанный каталог.проблема создания каталогов с chmodDirectory

Я пытаюсь изменить каталог, который создается на сайте, и не повезло. Довольно уверен, что именно этот блок кода по-прежнему ищет URL-адрес промежуточного уровня, а не живой.

function chmodDirectory($path = '.', $level = 0){ 
$ignore = array('cgi-bin', '.', '..'); 

$dh = @opendir($path); 


while(false !== ($file = readdir($dh))){ // Loop through the directory 
    if(!in_array($file, $ignore)){ 
    if(is_dir("$path/$file")){ 
     chmod("$path/$file",0777); 
     chmodDirectory("$path/$file", ($level+1)); 
    } else { 
     chmod("$path/$file",0777); // desired permission settings 
    }//elseif 

    }//if in array 

}//while 

closedir($dh); 

} // Функция

?> Заранее спасибо за любую помощь!

РЕДАКТИРОВАТЬ: Проблема заключается в том, что, хотя я изменил пути и база данных хранит правильные URL-адреса, каталог, который я хочу создать или получить доступ, все еще создается/доступен в промежуточном каталоге.

+0

Вы не описываете, что пойдет не так, каков ожидаемый результат, какие ошибки вы получите .... –

+0

Я с тех пор отредактировал его. Просто для уточнения. Он создает каталог в промежуточной части сайта, и я не уверен, где он получает $ path и как установить его в нужный каталог. –

+1

Удалите '@' перед 'opendir' и убедитесь сами, если он может открыть' $ path' .... – Wrikken

ответ

0

Связанные с файлом команды в PHP являются «текущими рабочими каталогами». Вы начинаете свой chmodDirectory() с . как путь, что означает «текущий рабочий каталог», который по умолчанию является каталогом, в котором существует скрипт.

Если вы используете промежуточный каталог в качестве подкаталога " живого "сайта, нет возможности, чтобы функция as-point указывала на живые каталоги, поскольку вы уходите от родственника." и только копать глубже. Например, если ваш скрипт в:

/home/sites/example.com/htdocs/staging/v1.1/upload.php 

то первый каталог обрабатывается будет

/home/sites/example.com/htdocs/staging/v1.1/ 

Если вы хотите, чтобы запустить процесс в «живом» области, вы должны позвонить функция с инициирующей пути:

или еще лучше:

chmodDirectory('/home/sites/example.com/htdocs/'); // start at this absolute path 

как путь вместо этого, поэтому он будет работать с «живой» версией вместо запуска в промежуточной области.

0

Привет, ребята, спасибо за вашу помощь ... ошибка на самом деле происходит из open_basedir в настройках php.ini. Я не могу написать каталог, потому что я под каталогом поддоменов.

Смежные вопросы