Pfad zum PHP-Binary finden

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Pfad zum PHP-Binary finden

    Huhu,
    ich befinde mich im Kontext eines über CLI ausgeführten PHP-Skriptes und möchte an den Pfad des ausführenden PHP-Binaries kommen. Ich hatte gehofft, der Pfad ist in der phpinfo oder ENV-Variable zu finden, Fehlanzeige. Klar, ich könnte auf die Suche gehen, ob ich irgendwo auf dem Rechner ein Binary finde. Mit "whereis php" auf der Shell auch recht schnell getan. Der Weg ist allerdings weder sehr schick noch Plattformunabhängig.
    Hat jemand eine Idee, ob und wie ich an den Pfad des Binaries komme?
    Hintergrund ist der, dass ich weitere Skripte über proc_open anstoßen möchte bzw. einige Cronjobs installieren. Und da würde ich gerne die manuelle Angabe des Pfades vermeiden.

  • #2
    Die Konstante PHP_BINDIR sollte eigentlich das gewünschte liefern.

    (Ich stelle nur gerade bei meinem Test [PHP 5.3.0/Win 7] fest, dass mir das bei Aufruf über die php.exe stur "C:\php5" meldet, obwohl die php.exe nicht mal auf dem Laufwerk liegt ... aber das kann ggf. an meiner Konfiguration liegen.)
    I don't believe in rebirth. Actually, I never did in my whole lives.

    Kommentar


    • #3
      Ahh, die Konstante kannte ich noch nicht. Ich erhalte allerdings auch (PHP 5.2.10/Win Vista) das Verzeichnis "C:\php5" gemeldet, auch nicht korrekt. Ich habe das soeben auf einem Server (PHP 5.2.11/aktuelles Suse) getestet, dort passt der Pfad. Scheint wohl plattformabhängig gesetzt zu werden...
      Mal in den Sourcecode suchen, wo das gesetzt wird...

      Weitere Tipps, her damit

      Kommentar


      • #4
        Also auf meinem XAMPP bekomme ich auch nur C:\php5. Und ich habe nichts in den Konfigurationsdateien gefunden. Auf meinem Linux-VH dagegen den korrekten Pfad.

        Peter
        Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
        Meine Seite

        Kommentar


        • #5
          Ein Weg, der aber auch nicht wirklich immer funktioniert ist

          PHP-Code:
          <?
          var_dump($_SERVER["PHPRC"]);
          ?>
          Wenn diese Variable gesetzt ist hast du den Binary Path.

          MFG

          Kommentar


          • #6
            $_SERVER["PHPRC"] ist bei mir nur im Webserver-Kontext gesetzt und enthält den Pfad zur INI-Datei.

            Die PHP_BINDIR-Konstante scheint während der Kompilierung von PHP gesetzt zu werden und darum wohl unter Windows immer C:\php5 (vgl. hier).

            Kommentar


            • #7
              Ich habe da jetzt mal eine kleine Klasse zusammengeschrieben und die ersten Tests sind recht erfolgreich. Klar das eine manuelle Suche nicht perfekt ist, da ich ja sonst ein Binary starten könnte. Aber testet das doch mal bitte auf von euch erreichbaren Systemen und überprüft, ob das Skript erfolgreich ist und schreibt das hier
              Angehängte Dateien

              Kommentar


              • #8
                Ich habe die Klasse zwar nur überflogen, gar nicht erst ausprobiert. Sie kann bei mir aber auch nicht funktionieren, dein bei mir ist PHP_OS = 'Darwin' (wie bei den meisten Macs) und wegen if(stristr(PHP_OS, 'win')!==false) würde die Klasse bei mir nach einer Exe suchen.

                Das kann man natürlich ganz leicht fixen. Aber wozu die Mühe? Ich habe bisher immer auf $_ENV['_'] vertraut und noch keine Installation gefunden, bei der das nicht funktioniert hätte.

                Kommentar


                • #9
                  Zitat von onemorenerd Beitrag anzeigen
                  Sie kann bei mir aber auch nicht funktionieren, dein bei mir ist PHP_OS = 'Darwin' (wie bei den meisten Macs) und wegen if(stristr(PHP_OS, 'win')!==false) würde die Klasse bei mir nach einer Exe suchen.
                  Ohh, na so kann das natürlich nicht funktionieren ^^ Sehr guter Hinweis, danke.

                  Ich habe bisher immer auf $_ENV['_'] vertraut und noch keine Installation gefunden, bei der das nicht funktioniert hätte.
                  Und der Hinweis ist genauso gut Danke dir! Werde ich mir mal einen Mac zum Testen suchen müssen...

                  Kommentar


                  • #10
                    Ich habe es nicht getestet, aber auf meinem (test)System dümpeln ein Dutzend php.exe und php-win.exe rum. Selbst auf den Produktionssystemen habe ich mehrere Versionen aktiv.

                    Wie soll es entscheiden, welche die richtige ist?

                    $_ENV['_']
                    Sagt bei mir:
                    Notice: Undefined index: _ in ...........
                    Zuletzt geändert von combie; 15.12.2009, 10:43.
                    Wir werden alle sterben

                    Kommentar


                    • #11
                      Zitat von combie Beitrag anzeigen
                      Wie soll es entscheiden, welche die richtige ist?
                      Genau das ist das Problem. Ansatz dafür wäre, alle gefundenen Binaries mit dem Parameter -v aufrufen und die Versionsnummer vergleichen. Ist aber auch Käse.

                      Aktuell verwende ich die Klasse so, dass ich den ersten Pfad verwende und dem Anwender als Standardeinstellung vorschlage. Es handelt sich um ein Skript zur Installation einer Software von der Shell, u.a. inklusive Cronjobeinrichtung, etc.

                      Kommentar

                      Lädt...
                      X