Say we usually access via
http://localhost/index.php?a=1&b=2&c=3
How do we execute the same in linux command prompt?
php -e index.php
But what about passing the $_GET variables? Maybe something like php -e index.php --a 1 --b 2 --c 3? Doubt that'll work.
Thank you!
Try using
WGET
:php -r 'parse_str($argv[2],$_GET);include $argv[1];' index.php 'a=1&b=2'
You could make the first part as an alias:
alias php-get='php -r '\''parse_str($argv[2],$_GET);include $argv[1];'\'
then simply use:
php-get some_script.php 'a=1&b=2&c=3'
Then set your $_GET variables on your first line in PHP, although this is not the desired way of setting a $_GET variable and you may experience problems depending on what you do later with that variable.
the variables you launch the script with will be accessible from the $argv array in your php app. the first entry will the name of the script they came from, so you may want to do an array_shift($argv) to drop that first entry if you want to process a bunch of variables. Or just load into a local variable.
If you have the possibility to edit the PHP script, you can artificially populate $_GET array using the following code at the beginning of the script and then call the script with the syntax:
php -f script.php name1=value1 name2=value2
From this answer on ServerFault:
Use the
php-cgi
binary instead of justphp
, and pass the arguments on the command line, like this:Which puts this in
$_GET
:You can also set environment variables that would be set by the web server, like this:
-- Option 1: php-cgi --
Use 'php-cgi' in place of 'php' to run your script. This is the simplest way as you won't need to specially modify your php code to work with it:
-- Option 2: if you have a web server --
If the php file is on a web server you can use 'wget' on the command line:
OR:
-- Accessing the variables in php --
In both option 1 & 2 you access these parameters like this: