У меня установлена Windows с интеграцией оболочки из Git (а также Cygwin), и следующий код PHP не запускает скрипт внешней оболочки с расширением .launcher :

<?php
  passthru("foo.sh");
  passthru("foo.launcher");
?>

Мои foo.sh и foo.launcher выглядят так:

#!/usr/bin/env sh
echo Works!

Когда я запускаю свой PHP-скрипт, запускается .sh , однако .launcher не работает, так как показывает ошибку:

Windows не может открыть этот файл: File: foo.launcher

Чтобы открыть этот файл, Windows необходимо знать, какую программу вы хотите использовать для его открытия.

В качестве обходного пути я мог бы, вероятно, изменить ассоциацию файлов, однако я думаю, что это заблокировано политикой компании (однако у меня все еще есть доступ к реестру). Поэтому я предпочитаю какое-то решение, которое я могу использовать с точки зрения PHP, если оно есть.

1 ответ1

2

Вы также можете написать скрипт-обертку, чтобы обойти эту проблему

#!/usr/bin/env sh
foo.launcher

и затем выполните этот скрипт изнутри php. Это позволит избежать изменений в реестре и нарушений политики компании.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .