Starten einer Applikation auf MacOS durch z.Bsp. php code

  • TVS 872-XT

    QTS 5.1.5.2679

    QTS/Apps auf Raid1

    Nutzerdaten auf Raid 6


    Webserver stellt eine Seite bereit, auf der Dokumente verlinkt sind, die im öffentlichen Bereich des Webservers abgelegt sind. Bei Aufruf des Links öffnet der Browser ein neues Fenster mit dem Dokument.

    Die Dokumente sind im lokalen Netzwerk verfügbar, das Verzeichnis ist als Netzlaufwerk an die Rechner (MacOS) angebunden. Die Dokumente können auf diesem Wege mit der Vorschau-App oder einem anderen Programm geöffnet und bearbeitet werden.


    Die Webseite soll nunmehr Links erhalten, die bewirken, daß die verlinkte Datei mit preview.app oder pages.app geöffnet werden. Dazu habe ich folgende Vorschläge erfolglos ausprobiert, wobei es erstmal darum ging, überhaupt eine Anwendung aus eine Website heraus zu öffnen:


    1. - Rückmeldung

    Code
    "Return value: NULL"
    PHP
    <?php
    // Rückgabewert anzeigen
    echo "Return value: $return";
    exec('unset DYLD_LIBRARY_PATH ;');
    putenv('DYLD_LIBRARY_PATH');
    putenv('DYLD_LIBRARY_PATH=/usr/Applications');
    $voila = shell_exec("open -a pages.app");
    var_dump($voila);
    ?>

    2. - Rückmeldung

    Code
    "array(0) { } Return value: 127"
    PHP
    <?php
    $applicationPath = "/System/Applications/Preview.app";
    $command = "open \"$applicationPath\"";
    exec($command, $output, $return);
    var_dump($output);
    echo "Return value: $return";
    ?>

    Was kann man tun? Danke vorab,

  • Also, ich bin definitiv kein Programmierer. Aber ein Mac-User. Und ich glaube das das was du da vorhast nicht gehen kann da in deinem Szenario der Browser das Dateihandling übernehmen müsste - also öffnen auf dem NAS und durchreichen an das entsprechende Programm auf dem Mac und die Datei nach dem bearbeiten wieder speichern soll. Mir ist kein Browser bekannt der sowas kann.

  • das was du da vorhast nicht gehen kann

    Danke, stimmt. Mir war nicht klar, daß exec() Programme auf dem Server aufruft und nicht auf dem Client. Habe halt keine Ahnung.

    Ich will jetzt versuchen, die zu öffnenden Dateien mit FTP zu verlinken. Wenn die Clients im lokalen Netzwerk mit FTP angebunden sind, kann man die Bearbeitung mit Preview.app vielleicht über den Browser initiieren.

  • Was du vorhast, geht schon, ist aber nicht ganz trivial.


    1. Möglichkeit

    • Auf deiner Webseite hast du keine Links, sondern die Dateien selbst zum Download. Bei jedem Klick wird die Datei erneut heruntergeladen. Im LAN ist die Geschwindigkeit hoch genug, so dass dies schnell geht.
    • Im Browser des Clienten wird bei Anwendungen der Dateieindung eine passende Anwendung zugeordnet, die dann automatisch mit der Datei geöffnet wird.

    Nachteil dieser Möglichkeit: Man kann die Dateien zwar anschauen, aber nicht ändern. Wenn man sie doch ändert, wird nur die lokale Kopie geändert. Man müsste dann noch eine Funktion zum Hochladen in der Webseite einbauen, aber das Handling wird umständlich bleiben.


    2. Möglichkeit

    Du baust dir ein eigenes Netzprotokoll. Beispiel: MAILTO: ist ein solches Netzprotokoll. Wenn ein Link auf ein Ziel mit MAILTO: verweist, öffnet der Browser direkt das Mailprogramm, das damit umgehen kann und die im Link stehende Mailadresse als Empfänger nutzt.

    • Du nimmst dein eigenes Netzprotokoll, nennen wir es mal BillBeaver:. Der Link auf deiner Webseite zeigt dann zu BillBeaver:/Pfad-lokal-auf-Client/Dateiname.
    • In Firefox auf dem Client (!) muss in about:config der neue Schlüssel network.protocol-handler.expose.BillBeaver mit dem Wert false angelegt werden.
    • Beim erstmaligen Öffnen dieses Links kann im Browser diesem eine Anwendung zugeordnet werden, und zwar das Skript aus dem nächsten Punkt.
    • Da Vorschau oder dein Editor höchstwahrscheinlich mit BillBeaver: nichts anfangen kann, musst du ein Shell-Script schreiben, welches dieses BillBeaver: aus dem Parameter entfernt und anschließend Vorschau oder den Editor aufruft. Dieses Shell-Skript könnte auch den lokalen Pfad zur Datei ganz oder teilweise setzen, um das Problem unterschiedlicher lokaler Pfade vom Server fernzuhalten. Dieses Skript muss im Browser als Anwendung für dein Netzprotokoll eingetragen sein.

    Nachteile der Lösung:

    Jeder Client braucht Zugriff auf die Dateien.

    Jeder (!) Client muss entsprechend eingerichtet werden (Netzprotokoll im Browser und Skript).


    Aber einmal eingerichtet funktioniert diese Lösung wunderbar.

  • 2. Möglichkeit

    Ich bin jetzt erst auf die Antwort aufmerksam geworden, vielen Dank. Ich bin mit der Methode nicht vertraut, aber bei allem, was ich in den letzten Wochen hinsichtlich der Einbindung der Datenbank gelernt habe, bin ich recht zuversichtlich. Werde das mal ausprobieren.

    Zwischenzeitlich bin ich auf eine alternative, komfortable Lösung gekommen:
    Ein Appleskript, das den Hyperlink aus dem aktiven Safaritab abholt, zerlegt, und einen festgelegten smb-Pfad vor den Dateinamen setzt und schließlich diese Datei mit preview.app öffnet.
    Das bedeutet, daß ich das pdf im zunächst Browser öffne. Wenn ich den Bedarf sehe, es zu bearbeiten, rufe ich das Skript auf.
    Das Skript lässt sich ganz angenehm über "Kurzbefehle" entweder in der Menuleiste des Betriebssystems anpinnen und/oder als Favorit in die Favoritenleiste des Browsers packen. "Kurzbefehle" bietet da die Option "shortcuts://run-shortcut?name=[name des kurzbefehls]" als URL an.
    An der Safari-Lösung ist ein klein wenig lästig, daß bei jedem Aufruf die Abfrage erfolgt, ob der Website der Aufruf eines Kurzbefehls erlaubt werden soll. Vielleicht kann man das noch abstellen.
    Ich hänge das Skript mal an, vielleicht interessiert sich jemand dafür:


    :)