将crontab中的参数通过shell传递给php脚本

cygmwpex  于 2023-03-24  发布在  Shell
关注(0)|答案(2)|浏览(165)

从我的shell脚本test.sh中,我想传递一些参数给PHP脚本,它会像这样读取它们:

test.sh

php -q /home/user/files/test.php "$1" "$2"
php -q /home/user/files/test.php $1 $2

为了测试参数的传递,我只是像这样读取它们(test.php):

<?php
   echo 'Arg 1: ' . $argv[1] ."\n";
   echo 'Arg 2: ' . $argv[2] ."\n";
?>

问题是,如果我test.sh在shell中使用命令运行www.example.com:

./test.sh one two

我的php脚本读取两个参数都很好(两次):

Arg 1: one
Arg 2: two
Arg 1: one
Arg 2: two

但是如果我通过crontab运行它,它不能读取参数,我只能得到:

Arg 1: 
Arg 2: 
Arg 1: 
Arg 2:

Cron Job看起来像这样:

20  13  *   *   *   /home/user/files/test.sh one two

如何通过cron作业将参数正确地传递给shell脚本,然后再传递给php?

a8jjtwal

a8jjtwal1#

您可能没有在php.ini中启用register_argc_argv
使用php的getopt获取命令行参数。
参见http://php.net/manual/en/function.getopt.php

xwbd5t1u

xwbd5t1u2#

如果你不能改变你phpini;你可以把选项设置为pram到php

php -q -d register_argc_argv=On /home/user/files/test.php "$1" "$2"

或者在bash脚本中引用它们

php -q /home/user/files/test.php '$1' '$2'

并通过全局服务器在脚本中访问它们

$foo=$_SERVER['argv'][1];
$bar=$_SERVER['argv'][2];

相关问题