如何将参数从bash传递到php脚本?

use*_*574 22 php parameters bash shell parameter-passing

我做了一个运行php脚本的bash脚本.没有参数它工作正常但是当我添加参数(id和url)时,有一些错误:

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
Run Code Online (Sandbox Code Playgroud)

我像这样从bash运行php脚本:

php /var/www/dev/dbinsert/script/automatisation.php?id=19&url=http://bkjbezjnkelnkz.com
Run Code Online (Sandbox Code Playgroud)

Tin*_*sen 31

称之为:

php /path/to/script/script.php -- 'id=19&url=http://bkjbezjnkelnkz.com'
Run Code Online (Sandbox Code Playgroud)

另外,修改PHP脚本以使用parse_str():

parse_str($argv[1]);
Run Code Online (Sandbox Code Playgroud)

如果$_SERVER['REMOTE_ADDR']未设置索引.


更高级的处理可能需要getopt(),但是parse_str()是一种快速的方法来使它工作.


小智 6

您无法将GET查询参数传递给PHP命令行界面.将参数作为标准命令行参数传递并使用$argc$argvglobals读取它们,或者(如果必须使用GET/POST参数)通过curl/wget调用脚本并以这种方式传递参数 - 假设您可以通过本地Web服务器.

这是你可以传递参数的方法$argc$argv( - 表示所有后续参数应该转到脚本而不是PHP解释器二进制文件):

php myfile.php -- argument1 argument2


Bas*_*ion 5

- 选项1:php-cgi -

使用'php-cgi'代替'php'来运行你的脚本.这是最简单的方法,因为您不需要专门修改您的PHP代码来使用它:

php-cgi -f /my/script/file.php id=19 myvar=xyz
Run Code Online (Sandbox Code Playgroud)

- 选项2:如果您有Web服务器 -

如果php文件在Web服务器上,您可以在命令行上使用'wget':

wget 'http://localhost/my/script/file.php?id=19&myvar=xyz'
Run Code Online (Sandbox Code Playgroud)

要么:

wget -q -O - "http://localhost/my/script/file.php?id=19&myvar=xyz"
Run Code Online (Sandbox Code Playgroud)

- 访问php中的变量 -

在选项1和2中,您可以像下面这样访问这些参数:

$id = $_GET["id"];
$myvar = $_GET["myvar"];
Run Code Online (Sandbox Code Playgroud)