2011-07-21 17 views
19

He hecho un script bash que ejecuta script php. Funciona bien sin parámetros, pero cuando agrego parámetros (identificador y URL), hay algunos errores:¿Cómo pasar parámetros de bash a php script?

PHP Deprecated: Comments starting with '#' are deprecated in /etc/php5/cli/conf                      .d/mcrypt.ini on line 1 in Unknown on line 0 
Could not open input file: /var/www/dev/dbinsert/script/automatisation.php?                      id=1 

corro script php de la fiesta de la siguiente manera:

php /var/www/dev/dbinsert/script/automatisation.php?id=19&url=http://bkjbezjnkelnkz.com 

Respuesta

26

llaman como:

php /path/to/script/script.php -- 'id=19&url=http://bkjbezjnkelnkz.com' 

también, modificar su script PHP para utilizar parse_str():

parse_str($argv[1]); 

Si el índice $_SERVER['REMOTE_ADDR'] no está configurado.


Más de manipulación avanzada pueden necesitar getopt(), pero parse_str() es una forma quick'n'dirty para conseguir que funcione.

+0

Sí! gracias Tino – user420574

+0

¿Cómo pasarías un directorio en el script php? – Michael

+1

@Michael, de la misma manera, solo léelo de la matriz '$ argv'. Además, la nigromancia de hilos es mala. –

6

No puede pasar los parámetros de consulta GET a la interfaz de línea de comandos de PHP. Pase los argumentos como argumentos de línea de comando estándar y use $argc and $argv globals para leerlos, o (si debe usar parámetros GET/POST) llame al script a través de curl/wget y pase los parámetros de esa manera, suponiendo que tenga el script accesible a través de un servidor web local.

Esto es cómo se puede pasar argumentos para ser leídos por $argc y (el - indica que todos los argumentos posteriores deben ir a la secuencia de comandos y no al intérprete binario de PHP):

php myfile.php -- argument1 argument2

+1

Puede pasar parámetros de consulta GET si usa php-cgi :) Vea ejemplos aquí: https://serverfault.com/questions/187025/how-to-pass-get-variables-to-a-php-script- a través de la línea de comandos – Bastion

+0

@Bastion magic link, gracias! – icc97

4

- Opción 1: php-cgi -

Use 'php-cgi' en lugar de 'php' para ejecutar su script. Esta es la forma más sencilla, ya que no tendrá que modificar su código php especialmente para trabajar con él:

php-cgi -f /my/script/file.php id=19 myvar=xyz 

- Opción 2: si tiene un servidor web -

Si el archivo PHP está en un servidor web puede utilizar 'wget' en la línea de comandos:

wget 'http://localhost/my/script/file.php?id=19&myvar=xyz' 

O:

wget -q -O - "http://localhost/my/script/file.php?id=19&myvar=xyz" 

- Acceso a las variables en PHP -

Tanto en la opción 1 & 2 se accede a estos parámetros como esto:

$id = $_GET["id"]; 
$myvar = $_GET["myvar"]; 
Cuestiones relacionadas