繁体   English   中英

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

[英]Passing GET Variable from one Bash/PHP Script to another

我不确定它的正确名称,但是我正在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中没有此类文件或目录

如果我从require()删除?id=1 ,它会执行而不会出错。

您正在考虑网络...您require是PHP引擎将使用OS查找的实际文件名。 即它会查找一个名为bash2.sh?id=1的文件,而您显然没有。

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

文件1

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

文件2

<?php
echo $id;

如果u使用第一个示例( system('./bash2.sh 2'); ),则在bash2.sh中,您将通过以下方式访问变量:

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

您不能将参数添加到硬盘上的静态文件中。 但是您可以定义一个全局变量,所需的脚本可以访问该变量。

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

而对于您的bash2.php:

<?php
echo $id;

老兄,您不应该使用参数。 当您执行php脚本时(我猜是在cron工作中),您添加了诸如some.php variable1 variable2 ..... etc等参数,

然后在php中,用$argv[0], $argv[1] .... etc得到该变量。

这就是bash脚本的方式。

尝试这样的事情:

<?php

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

?>

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

在这里这里 更多信息

希望这可以帮助!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM