トップ回答者
phpの実行結果を取得したい

質問
-
Microsoft Visual Basic 2008
.net3.5
php5
はじめまして
Microsoft Visual Basic 2008 にて、
---------------------------------------------------------
<?php
phpinfo();
?>
---------------------------------------------------------
php5 に、パイプで渡し、その結果を受け取りたいのですが、どのように行えばいいのか、検討がつきません
php5.exe に、通常、パイプ処理で、渡すとヘッターなど、削除されるため、削除されず、IISなどと
同じような結果を得たいのです。
皆様のお知恵を、いただきたく、投稿させていただきました。よろしくお願いします。
回答
-
そのPHP.exeはCLI(Command line interface)ですか?
php.exe -vと打ったときに「(cli)」と表示されるのであれば、ヘッダーは出力されない仕様となり、変更はできません。
http://jp2.php.net/manual/ja/features.commandline.php
IISはISAPI、ApacheはApacheモジュールとしてDLLが用意されています。
これらと同じような呼び出し手法を用いればできるのかもしれませんが、ネイティブの要素盛りだくさんになることが予想されます。
(調べていません)
すべての返信
-
そのPHP.exeはCLI(Command line interface)ですか?
php.exe -vと打ったときに「(cli)」と表示されるのであれば、ヘッダーは出力されない仕様となり、変更はできません。
http://jp2.php.net/manual/ja/features.commandline.php
IISはISAPI、ApacheはApacheモジュールとしてDLLが用意されています。
これらと同じような呼び出し手法を用いればできるのかもしれませんが、ネイティブの要素盛りだくさんになることが予想されます。
(調べていません)
-
自己レスです
php-cgi.exeを使うことで、解決できたことが、1つ
以下のソースで、2つのEXEを使わなくても、結果を取得できたこと
Dim myProcess As New Process()
Dim results As StringmyProcess.StartInfo.FileName = "php-cgi.exe"
myProcess.StartInfo.UseShellExecute = False
myProcess.StartInfo.RedirectStandardInput = True
myProcess.StartInfo.RedirectStandardOutput = TruemyProcess.StartInfo.Arguments = "xxxxx.php"
myProcess.StartInfo.UseShellExecute = False
myProcess.StartInfo.CreateNoWindow = TruemyProcess.Start()
results = myProcess.StandardOutput.ReadToEnd
myProcess.WaitForExit()
myProcess.Close()Debug.Print(results)
いろいろと、アドバイスありがとうございました。