5

適切な名前はわかりませんが、Linux サーバーの Bash スクリプト内で PHP コードを実行しています。これらの Bash ファイルが 2 つあり、あるファイルから次のファイルに GET 変数を渡せるようにしたいと考えています。

最初のファイルの簡略版は次のとおりです。

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

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

2 番目のファイルの簡易バージョンを次に示します。

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

echo $_GET['id'];

現在、Crontab で最初のファイルを実行すると、次のようなエラーが表示されます。

PHP 警告: require(bash2.sh?id=1): ストリームを開けませんでした: No such file or directory in /home/bash/bash1.sh on line 2

?id=1からを削除するとrequire()、エラーなしで実行されます。

4

4 に答える 4

2

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

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

file1

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

file2

<?php
echo $id;

最初の例を使用する場合(system('./bash2.sh 2');)次に、bash2.shで、次の方法で変数にアクセスします。

<?php
echo $argv[1]; //argv[0] is the script name
于 2012-11-27T16:50:00.203 に答える
2

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

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

そしてあなたのbash2.phpのために:

<?php
echo $id;
于 2012-11-27T16:50:11.857 に答える
1

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

そしてphpでは、その変数を で取得し$argv[0], $argv[1] .... etcます。

それがbashスクリプトからの方法です。

于 2012-11-27T17:24:32.100 に答える
0

次のようなことを試してください:

<?php

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

?>

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

詳細はこちらこちら

お役に立てれば!

于 2012-11-27T16:50:45.430 に答える