简体   繁体   中英

Passing GET Variable from one Bash/PHP Script to another

I am not sure the proper name for it, but I am executing PHP code within a Bash script on my Linux server. I have two of these Bash files and want to be able to pass a GET variable from one file to the next.

Here is a simplified version of the 1st file:

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

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

Here is a simplified version of the 2nd file:

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

echo $_GET['id'];

Currently, when I execute the 1st file on a Crontab, I get an error that says :

PHP Warning: require(bash2.sh?id=1): failed to open stream: No such file or directory in /home/bash/bash1.sh on line 2

If I remove the ?id=1 from the require() , it executes without an error.

You r thinking web... What u put in the require is the actual file name the PHP engine will look for using the OS. ie it looks for a file called bash2.sh?id=1 which u obviously do not have.

Either u call another script from withing, say with system('./bash2.sh 2'); Or, include, and use the method below to pass data.

file1

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

file2

<?php
echo $id;

If u use the first example ( system('./bash2.sh 2'); ) Then in bash2.sh you will access the variable in the following way:

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

You cannot add a parameter to a static file on your harddrive. But you can define a global variable which is accessable by the reqired script.

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

and for your bash2.php:

<?php
echo $id;

No dude you should use arguments. When you execute php script (I am guessing in cron job), you add arguments like some.php variable1 variable2 ..... etc`,

and then in php you get that varibale with $argv[0], $argv[1] .... etc .

That is the way from bash scripts.

Try something like this:

<?php

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

?>

And then in the bash script you'll be able to access the first parameter passed as $1.

More info here and here

Hope this helps!

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

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