通过 shell 将 crontab 中的参数传递给 php 脚本
Passing parameter in crontab through shell to php script
从我的 shell 脚本 test.sh 我想将一些参数传递给 PHP 脚本,该脚本将像这样读取它们:
test.sh
php -q /home/user/files/test.php "" ""
php -q /home/user/files/test.php
为了测试参数的传递,我只是像这样阅读它们 (test.php):
<?php
echo 'Arg 1: ' . $argv[1] ."\n";
echo 'Arg 2: ' . $argv[2] ."\n";
?>
问题是,如果我从 shell 运行 test.sh 使用命令:
./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 作业如下所示:
20 13 * * * /home/user/files/test.sh one two
如何通过 cron 作业将参数正确传递给 shell 脚本,然后再传递给 php?
您的 php.ini 中可能没有启用 register_argc_argv
。
使用php的getopt
获取命令行参数。
从我的 shell 脚本 test.sh 我想将一些参数传递给 PHP 脚本,该脚本将像这样读取它们:
test.sh
php -q /home/user/files/test.php "" ""
php -q /home/user/files/test.php
为了测试参数的传递,我只是像这样阅读它们 (test.php):
<?php
echo 'Arg 1: ' . $argv[1] ."\n";
echo 'Arg 2: ' . $argv[2] ."\n";
?>
问题是,如果我从 shell 运行 test.sh 使用命令:
./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 作业如下所示:
20 13 * * * /home/user/files/test.sh one two
如何通过 cron 作业将参数正确传递给 shell 脚本,然后再传递给 php?
您的 php.ini 中可能没有启用 register_argc_argv
。
使用php的getopt
获取命令行参数。