Как правильно передать имя файла в exec

Тема в разделе "PHP", создана пользователем dazed, 22 июн 2008.

Статус темы:
Закрыта.
Модераторы: latteo
  1. dazed

    dazed

    Регистр.:
    31 мар 2007
    Сообщения:
    208
    Симпатии:
    55
    Использую консольную программу, в ее параметрах необходимо передать имя файла.
    Работает как надо, но когда в имени файла встречается знаки "(", ")" то :confused:

    Пример такого выражения:

    Код:
    $URL="./files/my_files(for_test).txt";
    exec('Get.exe "'.$URL.'" "out.txt"');
    
    Пробывал и обрамлять с помощью escapeshellcmd($URL), но все тоже. Кто сталкивался с этим? HELP!
     
  2. Jeurey

    Jeurey

    Регистр.:
    13 сен 2006
    Сообщения:
    419
    Симпатии:
    576
    1. Путь к файлу должен быть полным
    2. $URL="c:/files/my_files\(for_test\).txt";
     
  3. dazed

    dazed

    Регистр.:
    31 мар 2007
    Сообщения:
    208
    Симпатии:
    55
    1. Если не встречаются ( и ) в имени файла то и такая адресация к файлу вполне подходит и работает.
    2. К сожалению метод экранирования несработал.
     
  4. Kaimi

    Kaimi

    Регистр.:
    28 окт 2007
    Сообщения:
    257
    Симпатии:
    253
    Если тестируешь на локалхосте попробуй с помощью FileMonitor определить куда апач ломится, тогда можно будет понять в чем именно проблема.
    Или попробуй текст $URL взять в одинарные кавычки, вдруг поможет...
     
  5. dazed

    dazed

    Регистр.:
    31 мар 2007
    Сообщения:
    208
    Симпатии:
    55

    С кавычками все нормально.

    FileMonitor странно показывает. Говорит что лезет что-то типа этого: /files/files
     
  6. Kaimi

    Kaimi

    Регистр.:
    28 окт 2007
    Сообщения:
    257
    Симпатии:
    253
    /files/files/ даже если полный адрес пишешь?
     
  7. dazed

    dazed

    Регистр.:
    31 мар 2007
    Сообщения:
    208
    Симпатии:
    55
    пишу короткий, но лезет правильно, именно в конце адреса где название файла он такое пишет.
     
  8. chewie

    chewie Создатель

    Регистр.:
    17 ноя 2007
    Сообщения:
    41
    Симпатии:
    1
    Попробуй через system(), да и проверь может твой get.exe с такими названиями файлов не работает.
     
  9. dazed

    dazed

    Регистр.:
    31 мар 2007
    Сообщения:
    208
    Симпатии:
    55
    с system() тоже самое.
    Видимо не работает с такими название, но почему? Как-то должна быть возможность передать ей название файла.

    Пока что решил проблему копированием файла в "1.txt" а потом отправляю этот файл в программку.

    Спасибо за желание помочь;)
     
  10. Miraage

    Miraage Angular/Laravel

    Регистр.:
    3 июн 2008
    Сообщения:
    230
    Симпатии:
    51
    попробуй передавать в переменную имя файла какнить так:
    PHP:
    $URL=getenv($_SERVER['DOCUMENT_ROOT'])."/files/my_files(for_test).txt";
    exec('Get.exe "'.$URL.'" "out.txt"');
     
Статус темы:
Закрыта.