Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/273.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用Shell将GET变量传递到php文件?_Php_Shell - Fatal编程技术网

如何使用Shell将GET变量传递到php文件?

如何使用Shell将GET变量传递到php文件?,php,shell,Php,Shell,可能重复: 我想用Shell脚本执行php文件,但我不知道如何传递GET变量 这个脚本“php script.php?var=data”不起作用,因为Shell找不到文件“script.php?var=data” 那么,你知道如何传递变量吗?如果确实无法使用GET变量,我可以通过其他方式传递变量并在我的php脚本中使用它吗?如果您通过命令行执行脚本(例如php your_script.php),您将无法使用$\u GET参数,正如您所经历的那样 但是,您可以使用PHP的CLI,它优雅地为您提供

可能重复:

我想用Shell脚本执行php文件,但我不知道如何传递GET变量

这个脚本“php script.php?var=data”不起作用,因为Shell找不到文件“script.php?var=data”


那么,你知道如何传递变量吗?如果确实无法使用GET变量,我可以通过其他方式传递变量并在我的php脚本中使用它吗?

如果您通过命令行执行脚本(例如
php your_script.php
),您将无法使用
$\u GET
参数,正如您所经历的那样

但是,您可以使用PHP的CLI,它优雅地为您提供了数组

要使用它,请按如下方式调用脚本:

php your_script.php variable1 "variable #2"
在脚本中,您可以通过以下方式访问变量:

<?php

$variable1 = $argv[1];
$variable2 = $argv[2];

?>

PHP CLI在命令结构中接受变量,如:

php woop.php --path=/home/meow/cat.avi
然后,您可以在PHP脚本中使用类似这样的选项:

getopt('path')
或者您可以直接从
argv
获取它们


作为@GBD所说的另一种选择,您也可以使用bash脚本来创建站点的页面。

我的想法是编写某种包装器脚本以提供给/usr/bin/php,并为其提供一个参数字符串以获取数据。毫无疑问,这是一个黑客,可能不是一个好的,但它应该得到的工作完成

<?php
/** Wrapper.php
 **
 ** Description: Adds the $_GET hash to a shell-ran PHP script
 **
 ** Usage:       $ php Wrapper.php <yourscript.php> arg1=val1 arg2=val2 ...
**/

//Grab the filenames from the argument list
$scriptWrapperFilename = array_shift($argv); // argv[0]
$scriptToRunFilename = array_shift($argv); // argv[1]

// Set some restrictions
if (php_sapi_name() !== "cli")
    die(" * This should only be ran from the shell prompt!\n");

// define the $_GET hash in global scope
$_GET;

// walk the rest and pack the $_GET hash
foreach ($argv as $arg) {
    // drop the argument if it's not a key/val pair
    if(strpos($arg, "=") === false)
        continue;

    list($key, $value) = split("=", $arg);

    // pack the $_GET variable
    $_GET[$key] = $arg;
}

// get and require the PHP file we're trying to run
if (is_file($scriptToRunFilename))
    require_once $scriptToRunFilename;
else
    die(" * Could not open `$scriptToRunFilename' for inclusion.\n");

?>

需要添加一件事-此方法依赖于用户以相同顺序提供参数的假设。您还可以传递“完整参数”(即php your_script.php“id=10”),然后创建自己的密钥=>val Arraynewfuniturey:这个方法看起来非常适合我的需要,非常感谢!=)。TheSimon:谢谢你的精确性。比选择的答案更好:使用“PHPCGI”可执行文件而不是“php”。见: