将变量传递给从命令行运行的PHP脚本 [英] Pass a variable to a PHP script running from the command line

查看:53
本文介绍了将变量传递给从命令行运行的PHP脚本的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

I have a PHP file that is needed to be run from the command line (via crontab). I need to pass type=daily to the file, but I don't know how. I tried:

php myfile.php?type=daily

但返回了此错误:

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

Could not open input file: myfile.php?type=daily

我该怎么办?

推荐答案

?type = daily 参数(以 $ _ GET 数组结尾)仅对通过网络访问的页面.

The ?type=daily argument (ending up in the $_GET array) is only valid for web-accessed pages.

您需要像每天调用 php myfile.php 一样调用它,并从 $ argv 数组(即为 $ argv [1] ,因为 $ argv [0] 将是 myfile.php ).

You'll need to call it like php myfile.php daily and retrieve that argument from the $argv array (which would be $argv[1], since $argv[0] would be myfile.php).

如果该页面也用作网页,则可以考虑两个选项.使用外壳程序脚本和 Wget 进行访问,然后从

If the page is used as a webpage as well, there are two options you could consider. Either accessing it with a shell script and Wget, and call that from cron:

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

或者在PHP文件中检查是否从命令行调用了它:

Or check in the PHP file whether it's called from the command line or not:

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

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

(Note: You'll probably need/want to check if $argv actually contains enough variables and such)

这篇关于将变量传递给从命令行运行的PHP脚本的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆