Pregunta Shell ejecuta / ejecuta la secuencia de comandos php con parámetros


Necesito ejecutar un archivo php con parámetros a través de shell.

así es como podría ejecutar el archivo php:

php -q htdocs / file.php

Necesito que se pase el parámetro 'show' y

php -q htdocs / file.php? show = nombre_de_how

no funciona

Si alguien pudiera deletrearme qué comando ejecutar para que el archivo php se ejecute con los parámetros establecidos, sería muy apreciado. Si no, intenta guiarme en la dirección correcta.


32
2017-07-20 15:01


origen


Respuestas:


test.php:

<?php
print_r($argv);
?>

Cáscara:

$ php -q test.php foo bar
Array
(
    [0] => test.php
    [1] => foo
    [2] => bar
)

38
2017-07-20 15:07



Si tiene un servidor web (no solo el intérprete de php está instalado, sino también LAMP / LNMP / etc), intente esto

wget -O - -q -t 1 "http://mysite.com/file.php?show=show_name" >/dev/null 2>&1

dónde:

  • «-O -» - (Letra "O", ¡no cero!) Redirige "html descargado" a stdout
  • «> / Dev / null 2> & 1» - redirige la salida stdout & stderr a la nada
  • «-Q» - tranquilo wget correr
  • «-T 1» - solo 1 Intenta conectarte (no como por defecto 20)

En el "exec" de PHP será muy similar a esto:

function exec_local_url($url) {
  exec('/usr/bin/wget -O - -q -t 1 "http://'. $_SERVER['HTTP_HOST'] .'/'
    . addslashes($url) . '" >/dev/null 2>&1'
  );
}

// ...

exec_local_url("file.php?show=show_name");
exec_local_url("myframework/seo-readable/show/show_name");

Por lo tanto, no necesita cambiar sus scripts para manejar argc / argv, y puede usar $ _GET como lo hace habitualmente.

Si desea ejecutar trabajos en segundo plano, vea por ej. Unix / Windows, ¿Proceso de fondo de configuración? del código php

Uso approach con wget en mis trabajos cron; Espero eso ayude.


4
2018-04-18 09:47



Necesita leer los parámetros de línea de comando de $ argc y $ argv.

Usar un signo de interrogación es algo que se hace en una URL y no tiene nada que ver con la ejecución de PHP desde una línea de comando.

Ver también: http://www.sitepoint.com/php-command-line-1/


3
2017-07-20 15:04



Además de las otras respuestas (que son bastante correctas), también puede pasar argumentos como parámetros de entorno, como este:

FOO=42 BAR=quux php test.php

Luego estarán disponibles en el superglobal $_ENV.


2
2017-07-20 15:15



Si lo está utilizando desde un archivo PHP, puede usar popen () y hacer algo como esto:

$part = $show_name; //or whatever you want with spaces

$handle = popen("php -q nah.php -p=". escapeshellarg($part) . " 2>&1", "r");

Esto usa la función escapeshellarg () para envolver el $part variable entre comillas (y escape cualquier comilla dentro de ella), para que pueda usarse como un argumento de shell de forma segura.


0
2017-07-20 15:30