将GET变量从一个Bash / PHP脚本传递到另一个

时间:2012-11-27 16:45:00

标签: php linux bash get

我不确定它的正确名称,但我在Linux服务器上的Bash脚本中执行PHP代码。我有两个这样的Bash文件,并希望能够将GET变量从一个文件传递到下一个文件。

以下是第一个文件的简化版本:

#!/usr/bin/php -q
<?php

require("bash2.sh?id=1");

以下是第二个文件的简化版本:

#!/usr/bin/php -q
<?php

echo $_GET['id'];

目前,当我在Crontab上执行第一个文件时,出现错误信息:

  

PHP警告:require(bash2.sh?id=1):无法打开流:没有这样的   第2行/home/bash/bash1.sh中的文件或目录

如果我从?id=1中移除require(),则会执行该错误。

4 个答案:

答案 0 :(得分:2)

你在思考网络...... 您放在require中的是PHP引擎要查找的实际文件名 使用操作系统。即它查找一个名为bash2.sh?id=1的文件,你显然没有。

要么使用system('./bash2.sh 2');来调用另一个脚本 或者,包括,并使用以下方法传递数据。

文件1

<?php
$id = 1;
require("bash2.sh");

file2的

<?php
echo $id;

如果你使用第一个例子(system('./bash2.sh 2');)那么在bash2.sh中你将以下列方式访问变量:

<?php
echo $argv[1]; //argv[0] is the script name

答案 1 :(得分:2)

您无法将参数添加到硬盘上的静态文件中。但是您可以定义一个可由需要的脚本访问的全局变量。

<?php
$id=1
require("bash2.php");

和你的bash2.php:

<?php
echo $id;

答案 2 :(得分:1)

没有人应该使用参数。当你执行php脚本(我在cron作业中猜测)时,你添加了像some.php variable1 variable2 .....等等的参数,

然后在php中使用$argv[0], $argv[1] .... etc获取该变量。

这是从bash脚本开始的方式。

答案 3 :(得分:0)

尝试这样的事情:

<?php

    $id = $_GET['id'];
    exec("./bash2.sh $id");

?>

然后在bash脚本中,您将能够访问作为$ 1传递的第一个参数。

More info herehere

希望这有帮助!