2

エコーごとに「完了」または「エラー」を返すスクリプトから戻り値を取得しようとしています。最初に、これをphp関数file_get_contentsで機能させることができると思いましたが、スクリプトで印刷しているものだけでなく、スクリプト全体を返します。それから私はそのcURL方法を信じていましたが、うまくいきません....

呼び出されるスクリプト:

<?php 
include("config.php");
print "complete";
?>

私のカールを使ったスクリプト:

$url="caller.php";
$ch = curl_init(); //initialize curl handle
curl_setopt($ch, CURLOPT_URL, $url); //set the url
curl_setopt($ch, CURLOPT_RETURNTRANSFER,1); //return as a variable
$response = curl_exec($ch); //run the whole process and return the response
curl_close($ch); //close the curl handle

echo "test". $response."|";

なぜこれが機能しないのですか?そして、どうすればそれを機能させることができますか?! ファイル方式?

4

5 に答える 5

5

含まれているスクリプトのエコーされた値をキャプチャしたい場合は、出力バッファリングを使用できます。

<?php
ob_start();    // start output buffering
include("caller.php");
$returned_value = ob_get_contents();    // get contents from the buffer
ob_end_clean();    // stop output buffering
?>
于 2012-10-08T13:14:39.223 に答える
0

phpcgiを使用して、スクリプトを実行し、コンテンツを取得できます。使用するshell_exec

于 2012-10-09T07:31:28.987 に答える
0

テキストをエコーするのではなく、変数を埋める方法で書き直しcaller.phpてください。理想的には、その変数を返す関数に入れます。それ以外はすべて汚いハックであり、エラーが発生しやすく、パフォーマンスの問題の原因となります。

于 2012-10-08T13:29:59.863 に答える
0

私の知る限り、有効な http (または他のプロトコル) と、curl が機能するスクリプトへの完全な URL が必要です (例: http://localhost/caller.php )。

または、のソリューションを試しjeroenて、スクリプトの出力を取得してください。

于 2012-10-08T13:16:53.087 に答える
0

呼び出されるスクリプトでは、「<?php」が最初の行の最初の文字から始まることを確認してください。そして、「?>」を削除します。

<?php
//this is 'to-be-called.php'
include("config.php");
echo "complete";

次のように呼び出します。

<?php
//this is 'caller.php'
//should it come with full url?
$Url      = "http://localhost/path/to-be-called.php"; 
$Handle   = curl_init($Url);
$Response = curl_exec($Handle);
curl_close($Handle);

echo $Response;

または、Jeroen の回答を参考にしてください。これは、同じサーバーで呼び出すための最良の方法です! POST/GET でパラメーターを渡す必要がある場合は、'caller.php' にこれらの値をグローバル変数に保存するように指示してから、'to-be-call.php' にこれらのグローバル変数から取得するように指示します。

于 2012-10-08T13:20:11.307 に答える