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



我不确定它的正确名称,但我正在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 引擎将查找的实际文件名使用操作系统。 即它查找一个名为 bash2.sh?id=1 的文件,而您显然没有该文件。

要么你从内部调用另一个脚本,比如说用system('./bash2.sh 2');或者,包含并使用下面的方法传递数据。

文件1

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

文件2

<?php
echo $id;

如果您使用第一个示例 ( 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这样的参数.....等',

然后在 PHP 中,你会得到带有 $argv[0], $argv[1] .... etc 的变体.

这就是 bash 脚本的方式。

尝试这样的事情:

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

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

更多信息在这里和这里

希望这有帮助!

相关内容

  • 没有找到相关文章

最新更新