> Phil Ewington - 43 Plc wrote on donderdag 10 juni 2004 15:11: > > >> Phil Ewington - 43 Plc wrote on donderdag 10 juni 2004 14:27: > >> > >>>> Phil Ewington - 43 Plc wrote on donderdag 10 juni 2004 12:58: > >>>> > >>>>> Hi All, > >>>>> > >>>>> Can anyone tell me how to pass arguments to a PHP script from the > >>>>> command line? I know I need to use the -args option but how > >>>>> exactly, I have tried the following... > >>>>> > >>>>> /usr/bin/php myscript.php -args key=value > >>>> > >>>> You don't have to call the -args argument. just run the script > >>>> from command line like this: > >>>> > >>>> php myscript.php value > >>>> > >>>> Where value is the argument you want to use in the script. > >>>> These arguments are stored in an arrray ($argv). > >>>> > >>>> Do a print_r($argv) and you can see the content. > >>> > >>> OK, but if no param name is passed in, I assume that the order they > >>> are passed in as must be correct or the script will not know what > >>> values belong to which parameters? This seems a little odd, I assume > >>> that $argv only exists when accessed from the command line? My > >>> script needs to be excuted from both command line and from web > >>> browsers. > >>> > >> > >> How do you mean the order must be correct. Use some code like this > >> to give it an index value. for ($counter=0; $counter < $argc; > >> $counter++) { list($key, $value) = each($argv); > >> echo ("key ". $key . "has value : " . $value . "\n"); > >> } > > > > Your example was... > > > > php myscript.php value > > > > That is just a value, no parameter name as with a query string, take > > this example... > > > > php myscript.php a b > > > > Let's say that this was requested from a browser like > > myscript.php?1=a&2=b > > > > PHP uses 1 & 2 to refer to the values, but the values would get mixed > > up if I was to use... > > > > $argv[0] & $argv[1] > > > > and the order of a and b were different when the script was called. > > Does that make sense? I find it odd that I need to write more code to > > 1) check $_GET and 2) check $argv, also simple error checking will > > fail for command line stuff when checking that all the required > > params are present. > > > > > > ic now i understand what you mean :) > Why not just pass the arguments on commandline like this: > > php myscript.php 1=a 2=b > > and then just split on '=' to get key & value.
That will do for me! Still more coding than I would like and not how I think it should be implemented, but hey we don't actually live in an ideal world do we ;o) Thanks for your help, it is much appreciated. - Phil. > >>> From what i understand the argv & argc are only avaliable when the > >> script is run from commandline. Just do a check on this and if not > >> there get some $_POST or $_GET variables. > >> > >>>> > >>>>> > >>>>> but this does not work, the script executes but key is not > >>>>> available as $_GET["key"] in my script. Any pointers will be much > >>>>> appreciated. > >>>>> > >>>>> TIA > >>>>> > >>>>> Phil. > >>>>> > >>>>> --- > >>>>> Phil Ewington - Technical Director > >>>>> > >>>>> 43 Plc - Ashdale House > >>>>> 35 Broad Street, Wokingham > >>>>> Berkshire RG40 1AU > >>>>> > >>>>> T: +44 (0)1189 789 500 > >>>>> F: +44 (0)1189 784 994 > >>>>> E: mailto:[EMAIL PROTECTED] > >>>>> W: www.soyouthink.com > >>>>> > >>>>> --- > >>>>> Outgoing mail is certified Virus Free. > >>>>> Checked by AVG anti-virus system (http://www.grisoft.com). > >>>>> Version: 6.0.701 / Virus Database: 458 - Release Date: 07/06/2004 > >>>> > >>>> --- > >>>> Incoming mail is certified Virus Free. > >>>> Checked by AVG anti-virus system (http://www.grisoft.com). > >>>> Version: 6.0.701 / Virus Database: 458 - Release Date: 07/06/2004 > >>>> > >>> --- > >>> Outgoing mail is certified Virus Free. > >>> Checked by AVG anti-virus system (http://www.grisoft.com). > >>> Version: 6.0.701 / Virus Database: 458 - Release Date: 07/06/2004 > >> > >> --- > >> Incoming mail is certified Virus Free. > >> Checked by AVG anti-virus system (http://www.grisoft.com). > >> Version: 6.0.701 / Virus Database: 458 - Release Date: 07/06/2004 > >> > > --- > > Outgoing mail is certified Virus Free. > > Checked by AVG anti-virus system (http://www.grisoft.com). > > Version: 6.0.701 / Virus Database: 458 - Release Date: 07/06/2004 > > --- > Incoming mail is certified Virus Free. > Checked by AVG anti-virus system (http://www.grisoft.com). > Version: 6.0.701 / Virus Database: 458 - Release Date: 07/06/2004 > --- Outgoing mail is certified Virus Free. Checked by AVG anti-virus system (http://www.grisoft.com). Version: 6.0.701 / Virus Database: 458 - Release Date: 07/06/2004 -- PHP General Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php