| PHP Developer Forum Hier habt ihr die Möglichkeit, eure Skriptprobleme mit anderen Anwendern zu diskutieren. Seid so fair und beantwortet auch Fragen von anderen Anwendern. Dieses Forum ist sowohl für ANFÄNGER als auch für PHP-Profis! Post your PHP questions here! |
 |

14-12-2009, 18:20
|
|
PHP-Desaster
PHP Expert
|
|
Registriert seit: Mar 2006
Beiträge: 3.104
|
|
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.
|

14-12-2009, 18:42
|
wahsaga
 Moderator
|
|
Registriert seit: Sep 2001
Beiträge: 24.486
|
|
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.
|

14-12-2009, 19:04
|
|
PHP-Desaster
PHP Expert
|
|
Registriert seit: Mar 2006
Beiträge: 3.104
|
|
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
|

14-12-2009, 19:46
|
Kropff
  Administrator
|
|
Registriert seit: Mar 2002
Ort: Köln
Beiträge: 11.310
|
|
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
|

14-12-2009, 19:47
|
|
djbrainnrg
Registrierter Benutzer
|
|
Registriert seit: Dec 2009
Beiträge: 7
|
|
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
|

14-12-2009, 19:51
|
|
PHP-Desaster
PHP Expert
|
|
Registriert seit: Mar 2006
Beiträge: 3.104
|
|
$_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).
|

14-12-2009, 21:28
|
|
PHP-Desaster
PHP Expert
|
|
Registriert seit: Mar 2006
Beiträge: 3.104
|
|
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
|

15-12-2009, 02:00
|
 |
onemorenerd
 Moderator
|
|
Registriert seit: Mar 2005
Ort: Berlin
Beiträge: 9.481
|
|
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.
|

15-12-2009, 08:17
|
|
PHP-Desaster
PHP Expert
|
|
Registriert seit: Mar 2006
Beiträge: 3.104
|
|
Zitat:
Zitat von onemorenerd
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.
Zitat:
|
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...
|

15-12-2009, 10:40
|
|
combie
PHP Expert
|
|
Registriert seit: May 2006
Beiträge: 2.925
|
|
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?
Sagt bei mir:
Zitat:
|
Notice: Undefined index: _ in ...........
|
Geändert von combie (15-12-2009 um 10:43 Uhr)
|

15-12-2009, 10:43
|
|
PHP-Desaster
PHP Expert
|
|
Registriert seit: Mar 2006
Beiträge: 3.104
|
|
Zitat:
Zitat von combie
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.
|
|
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
|
|
|
| Themen-Optionen |
|
|
| Thema bewerten |
|
|
Forumregeln
|
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.
HTML-Code ist aus.
|
|
|
|
PHP News
|