一尘不染

将变量传递给从命令行运行的php脚本

php

我有一个PHP文件,需要从命令行运行(通过crontab)。我需要传递type=daily给文件,但我不知道如何。我试过了:

php myfile.php?type=daily

但是返回了此错误:

无法打开输入文件:myfile.php?type = daily

我能做什么?


阅读 246

收藏
2020-05-26

共1个答案

一尘不染

?type=daily参数(在结束了$_GET阵列)仅适用于网络访问的页面。

您需要像调用它一样,php myfile.php daily并从$argv数组中检索该参数(为$argv[1],因为$argv[0]myfile.php)。

如果该页面也用作网页,则可以考虑两个选项。使用shell脚本和wget访问它,然后从cron调用它:

#!/bin/sh
wget http://location.to/myfile.php?type=daily

或检查php文件是否从命令行调用:

if (defined('STDIN')) {
  $type = $argv[1];
} else { 
  $type = $_GET['type'];
}

(注意:您可能需要/想要检查$argv实际上是否包含足够的变量等)

2020-05-26