none
phpの実行結果を取得したい RRS feed

  • 質問

  • Microsoft Visual Basic 2008

    .net3.5

    php5

     

    はじめまして

    Microsoft Visual Basic 2008 にて、

    ---------------------------------------------------------

    <?php

    phpinfo();

    ?>

    ---------------------------------------------------------

    php5 に、パイプで渡し、その結果を受け取りたいのですが、どのように行えばいいのか、検討がつきません

    php5.exe に、通常、パイプ処理で、渡すとヘッターなど、削除されるため、削除されず、IISなどと

    同じような結果を得たいのです。

     

    皆様のお知恵を、いただきたく、投稿させていただきました。よろしくお願いします。

     

    2008年8月8日 5:13

回答

  • そのPHP.exeはCLI(Command line interface)ですか?

    php.exe -vと打ったときに「(cli)」と表示されるのであれば、ヘッダーは出力されない仕様となり、変更はできません。

     

    http://jp2.php.net/manual/ja/features.commandline.php

     

     

    IISはISAPI、ApacheはApacheモジュールとしてDLLが用意されています。

    これらと同じような呼び出し手法を用いればできるのかもしれませんが、ネイティブの要素盛りだくさんになることが予想されます。

    (調べていません)

    2008年8月9日 6:43
    モデレータ

すべての返信

  • 外池と申します。

     

    「パイプ処理」とは・・・、コマンド・プロンプトで「|」(縦棒)で繋いで、縦棒の前の実行形式(exe、batなど)の標準出力を、縦棒の後の実行形式の標準入力へ渡す、一番古典的な「パイプ」のことですよね? (違ってたらごめんなさい)

     

    Visual Basicもコンソール・アプリケーションで標準出力や標準入力が使えますので、とりあえず、2種類のVBアプリに分けて、

      VBアプリ1 | PHPスクリプト | VBアプリ2

    とやれば、OKだと思うのですが。

     

    2008年8月8日 5:58
  • 山岡です

     

    外池さん、返答ありがとうございます。

     

    できれば、2つのアプリではなく、1つで、行える方法だと、助かります。

    CGI と、CLI が、今回、ヘッター情報など付加されるCGI で動かしたいのです。

     

    いわば、IIS や、Apache で、phpソースを、解釈して、出力する部分が、ご存知であれば、

    教えていただければと思います。

     

     

     

    2008年8月8日 7:58
  • そのPHP.exeはCLI(Command line interface)ですか?

    php.exe -vと打ったときに「(cli)」と表示されるのであれば、ヘッダーは出力されない仕様となり、変更はできません。

     

    http://jp2.php.net/manual/ja/features.commandline.php

     

     

    IISはISAPI、ApacheはApacheモジュールとしてDLLが用意されています。

    これらと同じような呼び出し手法を用いればできるのかもしれませんが、ネイティブの要素盛りだくさんになることが予想されます。

    (調べていません)

    2008年8月9日 6:43
    モデレータ
  • 自己レスです

     

    php-cgi.exeを使うことで、解決できたことが、1つ

    以下のソースで、2つのEXEを使わなくても、結果を取得できたこと

     


    Dim myProcess As New Process()
    Dim results As String

    myProcess.StartInfo.FileName = "php-cgi.exe"
    myProcess.StartInfo.UseShellExecute = False
    myProcess.StartInfo.RedirectStandardInput = True
    myProcess.StartInfo.RedirectStandardOutput = True

    myProcess.StartInfo.Arguments = "xxxxx.php"

    myProcess.StartInfo.UseShellExecute = False
    myProcess.StartInfo.CreateNoWindow = True

    myProcess.Start()
    results = myProcess.StandardOutput.ReadToEnd
    myProcess.WaitForExit()
    myProcess.Close()

    Debug.Print(results)

    いろいろと、アドバイスありがとうございました。
    2008年8月11日 15:14
  •  

    こんにちは、フォーラムオペレータ大久保です。

     

    本スレッドへの返信のうち、スレッドの主旨と無関係と思われるものにつきましては削除させていただきました。

    まことに恐れ入りますがご了承くださいますようお願い申し上げます。

     

    2008年8月12日 1:42