Pregunta

Tengo un servidor dev con varios hosts virtuales en él. Cada uno tiene que ser capaz de ejecutar el comando: impulsar generación ./ criolla Que script se ejecuta alguna php que reverse-ingenieros de la base de datos ... PERO el php se ejecuta debe incluirse para hacerlo.

No hay include_path establecido en el php.ini porque sería global para todos los hosts virtuales. Necesito el include_path que ser único para cada host virtual.

¿Cómo puedo tener este trabajo en la línea de comandos? (Nota: .htaccess no va a funcionar, porque la línea de comandos no pasa por Apache).

¿Hay alguna otra forma de evitar este problema? Tal vez que pasa un parámetro de línea de comandos para configurar una ruta de inclusión? Tal vez algo en la configuración .bashrc? : (

P.S. - El script funciona bien en mi mac, que tiene un hard-coded ruta de inclusión

¿Fue útil?

Solución

Cuando se ejecuta PHP desde la línea de comandos, puede utilizar el interruptor -d para definir las opciones de configuración, que normalmente se define en php.ini

Para más información sobre qué se puede hacer cuando se ejecuta PHP en la CLI, se puede echar un vistazo a Usando PHP desde la línea de comandos

En su caso, supongamos que se está ejecutando esta, que sólo muestra la include_path actual:

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

salida por defecto sería como esto (en mi máquina, por cierto):

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

Ahora, usando -d para anular include_path, de esta manera:

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

Te estás haciendo:

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


Lo admito, esto es bastante aburrida / tiempo para escribir, y que a veces se olvide de las cosas -dblahblah ...

Por lo tanto, se puede definir un alias, un poco como esto:

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

Y ahora, si está utilizando comandos myphp en lugar de php, no es necesario especificar el include_path más:

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

Esto no persistirá entre las sesiones de concha ... Así que podría poner el comando alias al final de su ~/.bashrc, por lo que se ejecuta cada vez que se conecte: -)

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top