2009-07-29 5 views
0

Ich habe einen Dev-Server mit mehreren virtuellen Hosts darauf. Jeder muss in der Lage sein, den Befehl auszuführen: prive-gen ./ creole Dieses Skript führt einige PHP aus, die die Datenbank reverse-engineeren ... ABER das php, das es ausführt, muss dazu enthalten sein.Wie generiert man ORM-Objekte auf virtuellen Hosts ohne include_path?

In der php.ini ist kein include_path gesetzt, weil er für alle virtuellen Hosts global wäre. Ich brauche den include_path für jeden vhost eindeutig zu sein.

Wie kann ich dies auf der Kommandozeile arbeiten lassen? (Hinweis: htaccess funktioniert nicht, da die Befehlszeile nicht über Apache läuft).

Gibt es einen anderen Weg, um dieses Problem zu umgehen? Vielleicht übergeben Sie einen Befehlszeilenparameter, um einen Include-Pfad festzulegen? Vielleicht etwas in .bashrc setzen? :(

PS - Das Skript funktioniert auf meinem Mac in Ordnung, die eine hartcodiert ist Pfad

Antwort

1

Wenn PHP von der Kommandozeile ausgeführt wird, können Sie die -d Schalter definieren Konfigurationsoptionen verwenden hat, das wäre normalerweise in php.ini

weitere Informationen zu definieren, was getan werden kann, wenn PHP in CLI ausgeführt wird, können Sie einen Blick auf Using PHP from the command line

in Ihrem Fall nehmen an, dass Sie diese einsetzen, die nur den aktuellenzeigt:

$ php -r 'var_dump(get_include_path());' 

Standard Ausgabe wie folgt (auf meiner Maschine, btw) wäre: Jetzt -d mit

string(20) ".:/usr/local/lib/php" 

, include_path, auf diese Weise außer Kraft zu setzen:

$ php -dinclude_path='.:/usr/local/lib/php:/var/my/directory/lib' -r 'var_dump(get_include_path());' 

Sie‘ wieder erhalten:

string(42) ".:/usr/local/lib/php:/var/my/directory/lib" 


Ich gebe zu, das ist ziemlich langweilig/lang zu geben, und Sie werden manchmal vergessen, die -dblahblah Sachen ...

Also, Sie können einen Alias ​​definieren, ein bisschen wie folgt aus:

$ alias myphp='php -dinclude_path=".:/usr/local/lib/php:/var/my/directory/lib"' 

Und jetzt, wenn Sie myphp Befehl statt php verwenden, brauchen Sie nicht die include_path mehr angeben:

$ myphp -r 'var_dump(get_include_path());' 
string(42) ".:/usr/local/lib/php:/var/my/directory/lib" 

Dies wird nicht zwischen den Shell-Sitzungen bestehen bleiben ... Sie könnten also den Befehl alias am Ende Ihrer ~/.bashrc setzen, so dass es jedes Mal ausgeführt wird, wenn Sie sich anmelden :-)