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

Статус
В этой теме нельзя размещать новые ответы.

dazed

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

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

Код:
$URL="./files/my_files(for_test).txt";
exec('Get.exe "'.$URL.'" "out.txt"');

Пробывал и обрамлять с помощью escapeshellcmd($URL), но все тоже. Кто сталкивался с этим? HELP!
 
1. Путь к файлу должен быть полным
2. $URL="c:/files/my_files\(for_test\).txt";
 
1. Если не встречаются ( и ) в имени файла то и такая адресация к файлу вполне подходит и работает.
2. К сожалению метод экранирования несработал.
 
Если тестируешь на локалхосте попробуй с помощью FileMonitor определить куда апач ломится, тогда можно будет понять в чем именно проблема.
Или попробуй текст $URL взять в одинарные кавычки, вдруг поможет...
 
Если тестируешь на локалхосте попробуй с помощью FileMonitor определить куда апач ломится, тогда можно будет понять в чем именно проблема.
Или попробуй текст $URL взять в одинарные кавычки, вдруг поможет...


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

FileMonitor странно показывает. Говорит что лезет что-то типа этого: /files/files
 
/files/files/ даже если полный адрес пишешь?
 
пишу короткий, но лезет правильно, именно в конце адреса где название файла он такое пишет.
 
Попробуй через system(), да и проверь может твой get.exe с такими названиями файлов не работает.
 
с system() тоже самое.
Видимо не работает с такими название, но почему? Как-то должна быть возможность передать ей название файла.

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

Спасибо за желание помочь;)
 
попробуй передавать в переменную имя файла какнить так:
PHP:
$URL=getenv($_SERVER['DOCUMENT_ROOT'])."/files/my_files(for_test).txt";
exec('Get.exe "'.$URL.'" "out.txt"');
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху