如何通过GET变量到PHP文件与壳牌? [重复](How to pass GET variabl

2019-09-22 21:07发布

可能重复:
PHP传递$ _GET在Linux命令提示符

我想执行与shell脚本PHP文件,但我不知道我可以通过GET变量。

这个脚本“PHP的script.php?VAR =数据”不工作,因为壳牌找不到文件“的script.php?VAR =数据”。

那么,你知道我可以通过我的变量? 如果它真的不可能使用GET变量,我可以通过其他方式传递变量,在我的PHP脚本使用它呢?

Answer 1:

如果您是通过执行命令行(比如你的脚本php your_script.php ),您将无法使用$_GET参数,如您遇到。

但是,您可以使用PHP的CLI它慷慨地给你的$argv数组。

要使用它,你会打电话给你的脚本是这样的:

php your_script.php variable1 "variable #2"

里面你的脚本,你可以访问的变量:

<?php

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

?>


Answer 2:

我的想法是写某种包装脚本来喂到/ 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");

?>


Answer 3:

PHP CLI需要变量的命令结构中,如:

php woop.php --path=/home/meow/cat.avi

然后,您可以使用类似http://php.net/manual/en/function.getopt.php获得等,使得在选择你的PHP脚本:

getopt('path')

或者你可以让他们直接形成argv

作为替代作为@GBD说,你可以使用bash脚本给wget您的网站的网页为好。



文章来源: How to pass GET variables to php file with Shell? [duplicate]
标签: php shell