@iliks

Висит скрипт из за exec() и popen() не учитывает пробелы, как решить?

Всем привет и всем добра!
popen("start /b C:/Users/il-ne/Desktop/Sublime Text 3.lnk", "r"); //не находит файл (из за пробелов в строке)

exec('"C:/Users/il-ne/Desktop/Sublime Text 3.lnk" ' . dirname (__FILE__) . "/" . $dir . "/file.php");  // выполняется но скрипт зависает 

echo json_encode(array('data1' => true, 'data2' => '/?page=url')); //выполнится только после закрытия программы sublime text


popen('start /b "C:/Users/il-ne/Desktop/Sublime Text 3.lnk"', "r"); //не выполняется (не знаю почему)

exec('"C:/Users/il-ne/Desktop/Sublime Text 3.lnk" ' . dirname (__FILE__) . "/" . $dir . "/file.php");  // выполняется но скрипт зависает 

echo json_encode(array('data1' => true, 'data2' => '/?page=url')); //выполнится только после закрытия программы sublime text


создал ярлык внутри проекта и дал ему название без пробелов
popen('start /b Sublime.lnk', "r"); //выполняется

exec('"Sublime.lnk" ' . dirname (__FILE__) . "/" . $dir . "/file.php");  // выполняется и файл открывается

echo json_encode(array('data1' => true, 'data2' => '/?page=url')); //выполнится после открытия файла


Проблема в том что если программа закрыта и используя только exec() скрипт зависает, но если программа уже открыта то скрипт функционирует нормально. Пробовал через разные (правила/не правила) в exec() типо >NUL и т.д. не работает, скрипт всегда виснет. Перерыл не одну страницу в гугле/яшке и не нашел решения, кроме как использовать popen для открытия программы, а далее использовать exec для запуска файлов в ней. Но проблема в том, что в popen() не учитываются пробелы как я не старался. Я понимаю, что я скорее всего делаю что-то не так, но понять, что именно не могу. Надеюсь на вашу помощь.
  • Вопрос задан
  • 211 просмотров
Решения вопроса 1
@iliks Автор вопроса
нашел на просторах интернетов вот такое решение:

echo json_encode(array('data1' => true, 'data2' => '/?page=url'));

$file = 'C:/Users/il-ne/Desktop/Sublime Text 3.lnk';
$args = dirname (__FILE__) . "/" . $dir . "/file.php";
	
pclose(popen("start \"bla\" \"" . $file . "\" " . $args, "r"));


нашел тут: https://www.somacon.com/p395.php
там же есть еще пара способов для решения такой задачи
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы