2009-07-29 15 views
0

J'ai un serveur de dev avec plusieurs hôtes virtuels dessus. Chacun doit être capable d'exécuter la commande: propel-gen ./ creole Ce script exécute du php qui reverse l'ingénierie de la base de données ... MAIS le php qu'il exécute doit être inclus pour cela.Comment générer des objets ORM propulser sur un hôte virtuel sans include_path?

Il n'y a pas de paramètre include_path dans le fichier php.ini car il serait global pour tous les hôtes virtuels. J'ai besoin que le include_path soit unique pour chaque vhost. Comment puis-je avoir ce travail sur la ligne de commande?

(note: htaccess ne fonctionnera pas, car la ligne de commande ne passe pas par apache).

Existe-t-il un autre moyen de contourner ce problème? Peut-être passer un paramètre de ligne de commande pour définir un chemin d'inclusion? Peut-être mettre quelque chose dans .bashrc? :(

PS - Le script fonctionne très bien sur mon mac, qui a un chemin d'inclusion codé en dur

Répondre

1

Lors de l'exécution PHP à partir de la ligne de commande, vous pouvez utiliser le commutateur -d pour définir les options de configuration, ce serait définir normalement dans php.ini

Pour plus d'informations sur ce qui peut être fait lors de l'exécution PHP CLI, vous pouvez jeter un oeil à Using PHP from the command line

dans votre cas, supposons que vous utilisez ce, qui affiche seulement lecourant:

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

sortie par défaut serait comme ça (sur ma machine, BTW):

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

Maintenant, en utilisant -d pour passer outre include_path, de cette façon:

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

Vous » obtenir:

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


je l'avoue, cela est assez ennuyeux/long à taper, et vous parfois oublier les trucs -dblahblah ...

Ainsi, vous pouvez définir un alias, un peu comme ceci:

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

Et maintenant, si vous utilisez la commande myphp au lieu de php, vous n'avez pas besoin de spécifier le include_path plus:

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

Cela ne va pas persister entre les sessions shell ... Vous pouvez donc mettre la commande alias à la fin de votre ~/.bashrc, donc elle est exécutée chaque fois que vous vous connectez :-)