Aufruf von externen Programmen

  • Man kann ja in PHP z.B. mit dem Befehl system() (so wie in C) ein externes Programm aufrufen...
    Im Handbuch von PHP steht jedoch, dass das PHP Skript nicht endet, bevor dieses extern aufgerufene Programm nicht geschlossen wird.

    Nehmen wir an, ich würde Word aus PHP heraus starten wollen...dann kommt das Skript ja nie zu einem Ende *g*. Weiß jemand, wie ich es anstellen kann, dass ich Word zwar aus einem PHP Skript heraus starte, aber, dass das Skript ganz normal weiterläuft, ungeachtet dessen, was Word macht?

    Ich habe mir folgendes überlegt: ich glaube in C kann man ja ein Programm starten und das C-Programm läuft normal ab, ohne auf die Beendigung des Programms, das aufgerufen wurde, zu warten.
    Vielleicht sollte man aus PHP eben ein C-Programm aufrufen, dass dann wiederum Word startet...das C-Programm würde normal quittieren und somit auch das PHP-Skript...
    Abgesehen davon, dass ich jetzt nicht weiß, ob das dann wirklich funktioniert, ist es doch etwas umständlich...

    Also falls wer bessere Vorschläge hat...nur zu :)

  • Zitat

    Note: If you start a program using this function and want to leave it running in the background, you have to make sure that the output of that program is redirected to a file or some other output stream or else PHP will hang until the execution of the program ends.


    Das müßte sicher machbar sein, zumal ich mir kaum vorstellen kann, daß Word einen brauchbaren Output auf stdout erzeugt...

    yast, SuSEconfig, apt-get and rpm - the 4 horsemen of the apocalypse

    Platform of insanity :: http://www.dose-xp.org

  • Machbar, nur wie?
    Egal, welches Windows-Programm ich starte, das Skript stürzt ab. (Es ist genau ein 2 Zeilen-Skript lol)

    Das ganze wird letztendlich ein System werden zum Konvertieren von docs in pdfs. Undzwar online-Konvertieren. D.h. über eine Webpage.

    Ich muss jetzt nur Word mit ein paar Parametern aufrufen, aber es will unter PHP nicht klappen, wegen diesem synchronisierten Dreck...
    Das Skript läuft nämlich nicht weiter ehe das gestartete Programm nicht zu Ende ist. Und zudem sieht man das gestartete Programm nicht mal...was mir auch Sorgen macht...

    Das ärgste ist ja: Das gestartete Programm beendet sich nach der Ausführung von einer Aufgabe nach Wunsch eh selbst. Nur läuft trotzdem einfach nichts richtig...weder die Aufgabe, die Word machen soll, noch das Skript....*verwirrt bin*.....

  • Uaaaah Hilfe!

    Jetzt hab ich's schon in C versucht, aber es geht nicht *grml*. Wenn man das C-Programm in der Windows-Konsole startet, passt alles, und Word wird durch das C-Programm gestartet - Aaaaaaber wenn man es über eine Webpage startet, werden zwar die Ausgaben ins Browser-Fenster alle richtig geschrieben, und Word wird "angeblich" gestartet, aber es ist weit und breit kein Word-Fester zu sehen....

    Was mach ich bloß falsch...?

  • hast schon probiert das ganze php als cgi laufen zu lassen? bei einigen webservern hab ich gesehen das die einiges so konfiguriert haben das php nicht wirklich was aufrufen kann vom system wenn es nicht als cgi ausgeführt wird.

    Wenn das so ist ist der rest nur mehr konfig sache in deinem webserver

  • So ENNNNNDLICH!!!!

    Echt zum Erschiessen. Jetzt geht alles. Der Fehler war wirklich eine Konfigurationssache - undzwar hängt das ganze mit den Systemdiensten von Windows zusammen. ROFL, bis man da mal draufkommt ;o))) --> gottseidank hatten andere ein ähnliches Problem.
    Man muss bei den Diensteinstellungen für Apache den "Datenaustausch zwischen Dienst und Desktop zulassen". Da macht man einfach ein Kreuzchen hin, startet Apache neu - voilà.
    Auf den Weg zur Lösung bin ich durch ne andere Möglichkeit gekommen: nämlich Word als Com Server anzusprechen. Das heißt man ruft die Methoden von Word durch ein COM-Objekt auf. Man kann über PHP in Word ein neues Dokument erstellen, Text schreiben, und es speichern oder sonstwas machen ;o)

    Das ganze geht natürlich auch über ein Makro, das man beim Start von Word mit /mMakroname aufruft. (nach dem "m" kein Abstand)

    Hui, bin froh, dass es jetzt läuft :)

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!