Baba: php exec: welcher User

Ich benutze php 5.3 auf einem Apachen unter Windows.

Wie kann ich den User bestimmen, der verwendet wird, wenn ich exec() in php verwende. Sorry, habe schon vergeblich gegooglet.

Das Problem trat auf, weil ich merkte, dass eine Umgebungsvar. für PATH verwendet wurde, die gewisse Pfade nicht enthielt.

Cheers,
Baba

  1. Mit runas.
    Du könntest auch den Benutzer, der den Apache Service startet, ändern.
    Aber warum bringst du nicht einfach die PATH-Variable in Ordnung?

    1. Mit runas.
      Du könntest auch den Benutzer, der den Apache Service startet, ändern.
      Aber warum bringst du nicht einfach die PATH-Variable in Ordnung?

      Vielen Dank. Runas klingt gut.
      Die PATH-Variable hatte ich gleich als adhoc-Lösung geändert (SET PATH=%PATH%;E:\Tortoise\bin) aber dachte an eine elegantere Lösung. Vor allem, weil ich das jedes Mal setzen muss, also bei jedem exec(). Mein Kentnisse reichen nicht aus, um das zu erklären. Ich hätte erwartet, dass ich mit SET die evnvar dauerhaft setze...

      Cheers,
      Baba

      1. Tach!

        Ich hätte erwartet, dass ich mit SET die evnvar dauerhaft setze...

        Nö, das schreibt nicht von sich aus im System herum, das setzt die Werte nur im aktuell laufenden Prozess. Dauerhaft festlegen geht über Startmenü -> Computer -> Propierties -> Advanced system settings -> im Tab Advanced -> Button Environment Variables

        dedlfix.

  2. Tach!

    Wie kann ich den User bestimmen, der verwendet wird, wenn ich exec() in php verwende.

    Anscheinend gibt es keine PHP-Funktion dafür. get_current_user() liefert nur den Script-Datei-Owner. exec('whoami') liefert den User unter dem der Prozess ausgeführt wird.

    Das Problem trat auf, weil ich merkte, dass eine Umgebungsvar. für PATH verwendet wurde, die gewisse Pfade nicht enthielt.

    Der User wird vermutlich egal sein, weil er als Systemaccount (für den Apachen) keine Shell eröffnet, der du eine .bashrc oder ähnliches unterschieben kannst. Da wird nur die vollständige Pfadangabe oder ein putenv('PATH=...'); helfen.

    dedlfix.

    1. Tach!

      Ach, Windows ...

      exec('whoami') liefert den User unter dem der Prozess ausgeführt wird.

      Da gehen natürlich keine Linux-Kommandos.

      Das Problem trat auf, weil ich merkte, dass eine Umgebungsvar. für PATH verwendet wurde, die gewisse Pfade nicht enthielt.

      Da wird wohl nur die systemweite Einstellung herangezogen werden. Der User, unter dem der Apache läuft, wird sich sicher nicht ändern. Frag das über den Taskmanager ab (Prozesse für alle Nutzer anzeigen).

      dedlfix.

      1. Da wird wohl nur die systemweite Einstellung herangezogen werden. Der User, unter dem der Apache läuft, wird sich sicher nicht ändern. Frag das über den Taskmanager ab (Prozesse für alle Nutzer anzeigen).

        Danke für diesen Hinweis. Bin nicht drauf gekommen. httpd.exe wird von SYSTEM ausgeführt. Das hilft mir auf jeden Fall mal weiter.
        Wie kann ich aber für SYSTEM den PATH dauerhaft setzen? Das Naheliegendste hat nichts bewirkt:

        Systemeigenschaften -> Erweitert -> Umgebungsvariablen -> Systemvariablen -> PATH -> Bearbeiten -> "Pfad für Tortoise eintragen" Dieser taucht nicht in PATH auf, bei exec("echo %PATH%");

        Cheers,
        Baba

        1. Tach!

          Wie kann ich aber für SYSTEM den PATH dauerhaft setzen? Das Naheliegendste hat nichts bewirkt:

          Systemeigenschaften -> Erweitert -> Umgebungsvariablen -> Systemvariablen -> PATH -> Bearbeiten -> "Pfad für Tortoise eintragen" Dieser taucht nicht in PATH auf, bei exec("echo %PATH%");

          Auch nicht nach einem Neustart? So ein Ändern wird nicht an sämtliche laufende Prozesse durchgereicht.

          dedlfix.

          1. Auch nicht nach einem Neustart?

            Nach dem Neustart ist der Pfad in PATH!
            Danke für den Hinweis.
            Cheers,
            Baba