За последние 24 часа нас посетили 15197 программистов и 1671 робот. Сейчас ищут 803 программиста ...

Проблемы с функцией glob

Тема в разделе "Прочие вопросы по PHP", создана пользователем seregarem, 12 июл 2013.

  1. seregarem

    seregarem Активный пользователь

    С нами с:
    26 авг 2008
    Сообщения:
    23
    Симпатии:
    0
    Есть код:
    Код (Text):
    1. $dir_from='\\\\10.4.11.2\\from_dir';
    2. $dir_to = '\\\\10.4.11.2\\fgif';
    3. foreach ($maps as $key => $value){
    4.         echo "<b>Каталог:</b> ".$value['old_folder']."<br />";
    5.         $old_file_path=$dir_from.'\\'.$value['old_folder'];
    6.         $mask = $dir_from.'\\'.$value['old_folder']."\\*.gif";  
    7.         echo "<b>Маска:</b> ".$mask."<br />";
    8.         if(glob($mask)==false) echo "BAD";
    9.         foreach (glob($mask) as $old_file){
    10.                 echo "Старый путь файла: ".$old_file."<br />";
    11.                 $from = fopen($old_file, "r");
    12.                 $contents = fread($from, 5000000);
    13.                 echo "Старое имя файла: ".basename($old_file)."<br />";
    14.                 list ($nm, $dt, $ext) = split ('[.]', basename($old_file));
    15.                 echo "Срок: ".substr($dt, 2, 2)."<br />";
    16.                 $new_file=$dir_from.'\\'.$value['old_folder'].'\\'.$value['new_filename'].'-'.$dt.'.gif';
    17.                 echo "Новое имя файла в $dir_from: ".$new_file."<br /><br />";
    18.                 $to = fopen($new_file, "wb");
    19.                 fwrite($to, $contents);
    20.                 touch($new_file, filemtime($old_file));
    21.                 fclose($to);
    22.                 if(date("d-m-Y", filemtime($old_file))==date("d-m-Y")){
    23.                         $new_file=$dir_to.'\\'.$value['new_filename'].'-'.substr($dt, 2, 2).'.gif';
    24.                         echo "Новое имя файла в $dir_to: ".$new_file."<br /><br />";
    25.                         $to = fopen($new_file, "wb");
    26.                         fwrite($to, $contents);
    27.                         touch($new_file, filemtime($old_file));
    28.                         fclose($to);
    29.                 }
    30.                 fclose($from);
    31.         }
    32.         echo "<br /><br /><br /><br />";
    33. }
    Если выполнять его в браузере, то все работает нормально, но если запускать в консоли на ubuntu, то скрипт вешается на строках:
    Код (Text):
    1. if(glob($mask)==false) echo "BAD";
    2. foreach (glob($mask) as $old_file){
    Т.е. пишет, соответственно: BAD и цикл не выполняется.
    Вопрос: работает ли glob с сетевыми путями? Если да, то в чем ошибка в коде? Если нет, то какой функцией его заменить, чтобы просмотреть все файлы с определенным разрешением в папке?
     
  2. Your

    Your Старожил

    С нами с:
    2 июл 2011
    Сообщения:
    4.074
    Симпатии:
    7
    Код (PHP):
    1. if(glob($mask)==false) 
    Вообще не понимаю зачем так делать? Еще и без строгости. ОМГ.

    Если четно такая лажа написана.
     
  3. seregarem

    seregarem Активный пользователь

    С нами с:
    26 авг 2008
    Сообщения:
    23
    Симпатии:
    0
    Это тупо проверка для отладки. Скрипт не работает на строке
    Код (Text):
    1. foreach (glob($mask) as $old_file){
    Тут, как я понимаю, проблемы с указанием пути к файлу.
    Путь такой:
    Код (Text):
    1. $dir_from='\\\\10.4.11.2\\from_dir';
    Маска такая в итоге:
    Код (Text):
    1. \\10.4.11.2\from_dir\123\*.gif
    В чем ошибка?
     
  4. Your

    Your Старожил

    С нами с:
    2 июл 2011
    Сообщения:
    4.074
    Симпатии:
    7
    И глупо. Не логично.
    Читайте документацию. Еще раз.


    Может проблема еще быть с путями.
     
  5. seregarem

    seregarem Активный пользователь

    С нами с:
    26 авг 2008
    Сообщения:
    23
    Симпатии:
    0
    Вы понимаете, что проблема не в
    Код (Text):
    1. if(glob($mask)==false)
    , а в
    Код (Text):
    1. foreach (glob($mask) as $old_file){
    Если вы не можете ничего конкретно посоветовать, не надо флудить.
     
  6. Your

    Your Старожил

    С нами с:
    2 июл 2011
    Сообщения:
    4.074
    Симпатии:
    7
    Забудьте программирование. Это не ваше.
     
  7. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    в браузере он под одним юзером запускается, а в консоли под другим, и прав нет доступа к папке и досвидос =)