如何从命令行将变量传递给php

时间:2014-02-14 17:15:11

标签: php linux command-line

我的本​​地计算机上有一个名为testsite的计算机上的网站。它在我的apache localhost

所以我可以从浏览器访问页面http://localhost/testsite/index.php?p=763

index.php包含其他php文件。 index.php从文件夹中的许多其他php文件来回调用。

所以我进入文件夹testsite并发出了命令          php index.php ?p=763

但它只显示index.php的结果,但不显示?p=763变量

的结果

此外,我想知道我何时运行php index.php如何列出它经历的所有php文件(因为从其他文件中调用了各种函数)。

3 个答案:

答案 0 :(得分:2)

您可以在PHP脚本的开头添加以下内容:

if (isset($argv[1]) && $argv[1][0] == '?') {
    parse_str(substr($argv[1], 1), $_GET);
}

它会自动解析包含查询参数的参数,并将它们存储在$ _GET变量中(从而在浏览器请求时生成它)。

不过,我不建议依赖这种方法。您应该更改您的应用程序,以便它能正确处理命令行参数。

要查看包含的所有文件,您应该使用脚本末尾的get_included_files函数:

print_r(get_included_files());

答案 1 :(得分:1)

$ _ GET仅对使用您的浏览器访问的页面有效。从控制台,检查$ argv。见https://stackoverflow.com/a/9612273/1349128

答案 2 :(得分:0)

如果您确实想在CLI上运行专为Web请求设计的脚本,可以通过从argv手动设置$_POST$_GET变量来作弊

看这篇文章: http://edmondscommerce.github.io/php/running-php-scripts-on-cli-and-faking-a-web-request.html