Estoy llamando a un script PHP cada vez que se carga una página web. Sin embargo, hay un parámetro que debe ejecutar el script PHP (que normalmente paso por la línea de comando cuando estoy probando el script).
¿Cómo puedo pasar este argumento cada vez que se ejecuta el script cuando se carga la página?
php
parameters
Mella
fuente
fuente
Respuestas:
Presumiblemente, está pasando los argumentos en la línea de comando de la siguiente manera:
... y luego acceder a ellos en el script de esta manera:
Lo que debe hacer al pasar argumentos a través de HTTP (acceder al script a través de la web) es usar la cadena de consulta y acceder a ellos a través de la superglobal $ _GET:
Ir http://yourdomain.com/path/to/script.php?argument1=arg1&argument2=arg2
... y acceso:
Si desea que el script se ejecute independientemente de desde dónde lo llame (línea de comando o desde el navegador) querrá algo como lo siguiente:
EDITAR: como señaló Cthulhu en los comentarios, la forma más directa de probar en qué entorno está ejecutando es usar la constante PHP_SAPI . He actualizado el código en consecuencia:
fuente
empty($_GET)
.$_GET
es un valor predefinido, así que estoy bastante seguro de que siempre se establece, pero está vacío si no hay parámetros GET establecidos.empty()
devuelvefalse
cadenas y matrices vacías.$_GET
de hecho no se establece si el script se llama en un contexto de línea de comando.empty()
provocaría que busque argumentos de línea de comandos si se accede al script desde la web sin una cadena de consulta, lo que arroja más avisos.PHP_SAPI === 'cli'
..htaccess
es un archivo Apache: Apache procesa las solicitudes entrantes con las directivas.htaccess
y luego invoca PHP para generar la respuesta a la solicitud. Entonces, si estás en la línea de comando,.htaccess
será completamente ignorado. Si está accediendo a una secuencia de comandos a través de la web y desea agregar nuevos argumentos de cadena de consulta después de recibir la solicitud, eso generalmente se hace conmod_rewrite
. Si eso no responde suficientemente a su pregunta, le sugiero que publique una nueva pregunta.Si desea que se ejecute todo el script, independientemente de desde dónde lo llame (línea de comando o desde el navegador), querrá algo como lo siguiente:
Para llamar desde la línea de comando
chmod 755 /var/www/webroot/index.php
y usarPara llamar desde el navegador, use
fuente