Pass a variable to a PHP script running from the command line(将变量传递给从命令行运行的 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 daily
一样调用它,并从 $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
).
如果页面也用作网页,您可以考虑两种选择.使用 shell 脚本和 Wget 访问它,然后从 cron:
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 脚本的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:将变量传递给从命令行运行的 PHP 脚本


- Laravel 5:Model.php 中的 MassAssignmentException 2021-01-01
- PHP - if 语句中的倒序 2021-01-01
- 使用 GD 和 libjpeg 支持编译 PHP 2022-01-01
- 如何使用 Google API 在团队云端硬盘中创建文件夹? 2022-01-01
- 如何在 Symfony2 中正确使用 webSockets 2021-01-01
- 如何从数据库中获取数据以在 laravel 中查看页面? 2022-01-01
- 覆盖 Magento 社区模块控制器的问题 2022-01-01
- Oracle 即时客户端 DYLD_LIBRARY_PATH 错误 2022-01-01
- openssl_digest vs hash vs hash_hmac?盐与盐的区别HMAC? 2022-01-01
- PHP foreach() 与数组中的数组? 2022-01-01