Wie führe ich ein Shellskript von PHP mit einer nicht standardmäßigen Erweiterung aus?

601
kenorb

Ich habe Windows mit Shell-Integration von Git (sowie von Cygwin) installiert, und der folgende PHP-Code kann kein externes Shell-Skript ausführen, das die .launcherErweiterung hat:

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

Meine beiden foo.shund foo.launchersieht so aus:

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

Wenn ich mein PHP-Skript starte, wird das .shausgeführt, was jedoch .launchernicht funktioniert, da es mir den Fehler anzeigt:

Windows kann diese Datei nicht öffnen: Datei: foo.launcher

Um diese Datei öffnen zu können, muss Windows wissen, welches Programm Sie zum Öffnen verwenden möchten.

Als Workaround könnte ich wahrscheinlich die Dateizuordnung ändern, jedoch denke ich, dass dies durch die Unternehmensrichtlinien blockiert ist (jedoch habe ich immer noch Zugriff auf die Registrierung). Also bevorzuge ich eine Lösung, die ich aus PHP-Perspektive verwenden kann, wenn es welche gibt.

0

1 Antwort auf die Frage

2
David King

Sie können auch ein Wrapper-Skript schreiben, um dieses Problem zu umgehen

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

und dann das Skript aus PHP heraus ausführen. Dies würde Registrierungsänderungen und Verstöße gegen die Unternehmensrichtlinien vermeiden.