Как выполнить скрипт оболочки из PHP с нестандартным расширением?

580
kenorb

У меня установлена ​​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, если оно есть.

0

1 ответ на вопрос

2
David King

You could also write a wrapper script to get around this problem

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

and then execute that script from within php. That would avoid registry changes and company policy violations.