How to pass parameters from bash to php script?

巧了我就是萌 提交于 2019-12-17 13:44:24

问题


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 Deprecated:  Comments starting with '#' are deprecated in /etc/php5/cli/conf                                                                                        .d/mcrypt.ini on line 1 in Unknown on line 0
Could not open input file: /var/www/dev/dbinsert/script/automatisation.php?                                                                                        id=1

I run php script from the bash like this:

php /var/www/dev/dbinsert/script/automatisation.php?id=19&url=http://bkjbezjnkelnkz.com

回答1:


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.




回答2:


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




回答3:


-- 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"];


来源:https://stackoverflow.com/questions/6779576/how-to-pass-parameters-from-bash-to-php-script

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!