PHPプログラムないで別PHPを呼び出し戻り値を受け取ろうと考えています。
test1.php-------------
<?php
print "<html><body>\n";
$return_data= exec(/usr/local/bin/php ./test2.php?param1=1¶m2=2);
print $param1."+".$param2."=".$return_data;
print "</body></html>";
test2.php------------------
<?php
$return_item = $param1 + $param2;
print $return_item;
?>
のように、test1.phpからパラメータを渡し、
test2.phpで計算をして答えをtest1.phpに返す
プログラムを作成しました。
test1.phpからtest2.phpをパラメータをつけて渡すのが
うまくいきません。
execではパラメータをつけることはできないのでしょうか?もしくは他の方法はないでしょうか?
functionやincludeではなく上記の方法で行いたいと思っております。
お手数ですが、アドバイスお願い致します。
No.3ベストアンサー
- 回答日時:
こんにちは。
CやJAVAやっていれば、すぐわかるのでしょうが・・・。
コマンドライン上からパラメータを渡す方法を考えてください。
PHPのようなC言語ライクな言語では慣用的に、
argv や argc といった「arg」が付く変数名が特別な扱い方をされます。
JAVAだと args ですね。
で、PHPだと、
$argv と $argc になります。
$argv は、引数で渡されたパラメータの配列です。
$argc は、パラメータの個数が格納されています。
パラメータの渡し方は、
"/usr/local/bin/php ./test2.php aaa bbb"
のように、半角で区切った形になります。
GETのように、スクリプトのあとに aaa=bbb&ccc=ddd と渡すと
「&」以降が特殊な値ととられてしまいます。
具体的にいうと、 test2.php のパラメータを受け取る部分は以下のようになります。
$param1 = $argv[1];
$param2 = $argv[2];
で、$argv[0] には、./test2.php が入っています。(実行させたいスクリプトへのパス)
また、$argc には、3 が入っています。(配列$argv の要素数)
次に、実行結果を受けとる方法ですが、
test2.phpから、実行結果を受け取りたい場合は、exec 関数は、他の言語の exec 関数より便利に出来ています。
test1.php を以下のようにしてください。
exec("/usr/local/bin/php ./test2.php aaa bbb" , $rec , $status);
if ($status != 0){
print "失敗しました";
exit(1);
}
test2.php は、
print $return_item;
exit();
?>
とした場合、
$rec に print で出力した結果が入っていると思います。
※注意
実をいうと $rec には意図した結果以外に色々なデータも入っています。
たとえば、test2.php で、
$aaa = "aaaa";
print $aaa;
とした場合、
$rec には、
$rec[0] : Content-type: text/html; charset=EUC-JP
$rec[1] : X-Powered-By: PHP/5.0.2
$rec[2] :
$rec[3] : aaaa
という値が入っています。
$rec[0] から $rec[2] までは環境によって違います。つまり、test2.php から受け取ったデータが $rec のどの要素に入っているかは、環境によって違ってきますので、まず、
exec("/usr/local/bin/php ./test2.php aaa bbb" , $rec , $status);
if ($status != 0){
print "失敗しました";
exit(1);
}
print_r($rec);
で、確認してみてください。
No.2
- 回答日時:
・単純に、test2.phpに計算だけする関数を定義して、それをtest1.phpで呼び出す。
だったらtest1.phpにその関数を書いた方がいいんだけど。・test1.phpからtest2.phpへリダイレクトする。リダイレクトする際に、パラメータを付ける。それからまた、test2.phpからtest1.phpへリダイレクトする。あんまり意味はないけど。
この場合、何をしたいのかがわかれば、的確に答えられると思います。
あと、「param1=1」の後が文字化けしてますけど、「param1=1¶m2=2」ってなってますよね?それから、test2.phpでGET値を取得していないようですが、大丈夫ですか?GET値=変数名は古い仕様です。$_GET["param1"]で取得してみてください。あー、あと、「print $return_item」ってやっても、test1.phpに値は返らないんじゃないかな。
No.1
- 回答日時:
$return_data= exec("/usr/local/bin/php ./test2.php param1=1 m2=2");
コマンドを呼んでるようなので、、「?,&」でなくて「 (半角スペース)」でどうでしょう?
また、「./test2.php」のような相対パスでなくて、絶対パスで書いたほうが確実かと思います
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
あなたの「必」の書き順を教えてください
ふだん、どういう書き順で「必」を書いていますか? みなさんの色んな書き順を知りたいです。 画像のA~Eを使って教えてください。
-
これ何て呼びますか
あなたのお住いの地域で、これ、何て呼びますか?
-
【お題】引っかけ問題(締め切り10月27日(日)23時)
【大喜利】 「日本で一番高い山は富士山……ですが!」から始まった、それは当てられるわけ無いだろ!と思ったクイズの問題
-
【大喜利】【投稿~10/21(月)】買ったばかりの自転車を分解してひと言
【お題】 ・買ったばかりの自転車を分解してひと言
-
好きな「お肉」は?
牛肉、豚肉、鶏肉、ラム肉、クマやシカの狩猟肉……。 いろ〜んな肉が食べられるようになりましたよね。 あなたがこれまで食べて「これはうまい!」とか「なんじゃこりゃ!」と好きになったお肉を教えてください。
-
PHPから別なPHPへ移動(?)する方法
PHP
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・【大喜利】【投稿~11/12】 急に朝起こしてきた母親に言われた一言とは?
- ・好きな和訳タイトルを教えてください
- ・うちのカレーにはこれが入ってる!って食材ありますか?
- ・好きな「お肉」は?
- ・あなたは何にトキメキますか?
- ・おすすめのモーニング・朝食メニューを教えて!
- ・「覚え間違い」を教えてください!
- ・とっておきの手土産を教えて
- ・「平成」を感じるもの
- ・秘密基地、どこに作った?
- ・【お題】NEW演歌
- ・カンパ〜イ!←最初の1杯目、なに頼む?
- ・一回も披露したことのない豆知識
- ・これ何て呼びますか
- ・チョコミントアイス
- ・初めて自分の家と他人の家が違う、と意識した時
- ・「これはヤバかったな」という遅刻エピソード
- ・これ何て呼びますか Part2
- ・許せない心理テスト
- ・この人頭いいなと思ったエピソード
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・あなたの習慣について教えてください!!
- ・ハマっている「お菓子」を教えて!
- ・高校三年生の合唱祭で何を歌いましたか?
- ・【大喜利】【投稿~11/1】 存在しそうで存在しないモノマネ芸人の名前を教えてください
- ・好きなおでんの具材ドラフト会議しましょう
- ・餃子を食べるとき、何をつけますか?
- ・あなたの「必」の書き順を教えてください
- ・ギリギリ行けるお一人様のライン
- ・10代と話して驚いたこと
- ・家の中でのこだわりスペースはどこですか?
- ・つい集めてしまうものはなんですか?
- ・自分のセンスや笑いの好みに影響を受けた作品を教えて
- ・【お題】引っかけ問題(締め切り10月27日(日)23時)
- ・大人になっても苦手な食べ物、ありますか?
- ・14歳の自分に衝撃の事実を告げてください
- ・架空の映画のネタバレレビュー
- ・「お昼の放送」の思い出
- ・昨日見た夢を教えて下さい
- ・ちょっと先の未来クイズ第4問
- ・【大喜利】【投稿~10/21(月)】買ったばかりの自転車を分解してひと言
- ・メモのコツを教えてください!
- ・CDの保有枚数を教えてください
- ・ホテルを選ぶとき、これだけは譲れない条件TOP3は?
- ・家・車以外で、人生で一番奮発した買い物
- ・人生最悪の忘れ物
- ・【コナン30周年】嘘でしょ!?と思った○○周年を教えて【ハルヒ20周年】
- ・あなたの習慣について教えてください!!
- ・都道府県穴埋めゲーム
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
phpからoutlook起動
-
.htaccessにphp_valueが使用できな
-
フォームで戻った際に入力済み...
-
*.php、*.php3、*.phtmlの違い
-
PHPからMSSQLへの接続結果の文...
-
PHPのif文でその処理を途中で抜...
-
Subversionのリポジトリの削除
-
PHPにおける時間計算、時間足し...
-
【file_exists】ファイルが存在...
-
onedrive にexcelファイルをア...
-
xamppでGDを使いたい。
-
VBSの「MsgBox」について
-
SSI される .inc ファイル内に ...
-
phpのクラスにて別ファイルの変...
-
php.ini を設定を変更すると再...
-
imagecreatetruecolor()関数で...
-
php,mysqlにて画像パス保存/表...
-
ファイルのアップロードで、フ...
-
PythonのTkinter詳しい方へ。画...
-
PHPでネットワークドライブのop...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
phpの中でphpを書けないか
-
*.php、*.php3、*.phtmlの違い
-
フォームで戻った際に入力済み...
-
.htaccessにphp_valueが使用できな
-
<A href ~ と一緒に値を渡すには
-
header(Location:~)で$_SESS...
-
iframeで読み込んだ別のphpファ...
-
複数のPHPファイルを読み込むに...
-
phpのextension_dirを複数指定...
-
PHPからMSSQLへの接続結果の文...
-
PHPINFOが見えない
-
%php stringcast.php 100
-
さくらインターネットでメール...
-
テレメールとは?
-
Apache 2.4でphp-5.3を使いたい...
-
phpからoutlook起動
-
phpの対話型実行ツール?
-
耳に毛がかかるって?
-
Apacheの設定ファイルにPHPの設...
-
これの対応OSを教えて下さい。p...
おすすめ情報