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.