簡體   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