Você também pode escrever um script wrapper para contornar este problema
#!/usr/bin/env sh
foo.launcher
e, em seguida, executar esse script de dentro do php. Isso evitaria alterações no registro e violações da política da empresa.
Eu tenho o Windows com integração de shell instalado pelo Git (assim como o Cygwin) e o seguinte código PHP falha ao executar o script de shell externo que possui .launcher
extension:
<?php
passthru("foo.sh");
passthru("foo.launcher");
?>
Meus dois foo.sh
e foo.launcher
se parecem com:
#!/usr/bin/env sh
echo Works!
Quando executo meu script PHP, o .sh
é executado, no entanto .launcher
não funciona, pois mostra o erro:
Windows can't open this file: File: foo.launcher
To open this file, Windows needs to know what program you want to use it to open.
Como solução alternativa, provavelmente poderia alterar a associação de arquivos, mas acho que ela está bloqueada pela política da empresa (no entanto, ainda tenho acesso ao registro). Então eu prefiro alguma solução que eu possa usar do ponto de vista do PHP, se houver alguma.