2012-11-27 18 views
5

私は正しい名前がわかりませんが、私のLinuxサーバーのBashスクリプトでPHPコードを実行しています。私はこれらのBashファイルのうち2つを持っていて、あるファイルから別のファイルにGET変数を渡すことができるようにしたいと考えています。ここでは第二のファイルの簡易版であるあるBash/PHPスクリプトから別のBash/PHPスクリプトへGET変数を渡す

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

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

はここで第一のファイルの簡易版である

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

echo $_GET['id']; 

、私はクローンタブ上の第一のファイルを実行すると、

PHP警告:require(bash2.sh?id=1):ストリームを開くことに失敗しました:いいえそのような ライン上の/home/bash/bash1.sh内のファイルまたはディレクトリ2

私はrequire()から?id=1を削除した場合、それはエラーなしで実行されます。

+0

これはうまくいきません...スクリプトの正確な名前を検索する必要があります。URLではないので変数を渡すことはできません。パスです。私がスクリプト間で変数を渡すために知っている唯一の方法は、session_start()とheader()ですが、これらはWebサーバーなしでは動作しません。 – Naryl

答えて

2

あなたの考えているウェブ... requireに入れるものは、PHPエンジンがOSを使用して を探す実際のファイル名です。つまり、明らかに持っていないbash2.sh?id=1というファイルを探します。

withingの別のスクリプトを呼び出します。たとえば、system('./bash2.sh 2'); と入力します。または、以下のメソッドをインクルードして使用して、データを渡します。

file1の

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

FILE2

<?php 
echo $id; 

uは最初の例(system('./bash2.sh 2');)を使用している場合次にbash2.shには、次のように変数にアクセスします:

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

'$ argv [1]'ではなく 'argv [1]'でなければなりません – Chris

2

ハードドライブ上の静的ファイルにパラメータを追加することはできません。しかし、必要なスクリプトがアクセス可能なグローバル変数を定義することができます。

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

とあなたのbash2.php用:

<?php 

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

?> 

そしてbashスクリプトで使用すると、渡された最初のパラメータにもアクセスできるようになります:

<?php 
echo $id; 
1

引数を使用する必要があります。 PHPスクリプト(私はcronジョブで推測している)を実行すると、some.php variable1 variable2 .....のような引数を追加します

そして、PHPであなたは$argv[0], $argv[1] .... etcでvaribaleを取得します。

これはbashスクリプトからの道です。

関連する問題