How to pass parameters from bash to php script?

前端 未结 3 1779
失恋的感觉
失恋的感觉 2020-12-03 20:48

I have done a a bash script which run php script. It works fine without parameters but when I add parameters (id and url), there are some errors:

PHP Deprec         


        
相关标签:
3条回答
  • 2020-12-03 21:19

    -- 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:

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

    -- 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:

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

    OR:

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

    -- Accessing the variables in php --

    In both option 1 & 2 you access these parameters like this:

    $id = $_GET["id"];
    $myvar = $_GET["myvar"];
    
    0 讨论(0)
  • 2020-12-03 21:21

    You can't pass GET query parameters to the PHP command line interface. Either pass the arguments as standard command line arguments and use the $argc and $argv globals to read them, or (if you must use GET/POST parameters) call the script through curl/wget and pass the parameters that way – assuming you have the script accessible through a local web server.

    This is how you can pass arguments to be read by $argc and $argv (the -- indicates that all subsequent arguments should go to the script and not to the PHP interpreter binary):

    php myfile.php -- argument1 argument2

    0 讨论(0)
  • 2020-12-03 21:27

    Call it as:

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

    Also, modify your PHP script to use parse_str():

    parse_str($argv[1]);
    

    If the index $_SERVER['REMOTE_ADDR'] isn't set.


    More advanced handling may need getopt(), but parse_str() is a quick'n'dirty way to get it working.

    0 讨论(0)
提交回复
热议问题