0

いくつかの db エントリを json ファイルに返す php スクリプトを設定しようとしています。スクリプトは、別の Web サイトから読み取ると機能しているように見えますが、(テスト目的で) 同じフォルダーから出力を読み取ろうとすると機能しません。json を生成するための php コード:

header('Cache-Control: no-cache, must-revalidate');
header('Expires: Mon, 01 Jan 1996 00:00:00 GMT');
header('Content-type: application/json');
//snipped sql magic
echo json_encode($rows);

サイトのページにアクセスすると、期待どおりの結果が返されます。

[{"id":96,"name":"name1"},{"id":39,"name":"name2"}]

ここまでは順調ですね。ただし、同じフォルダー内の別のphpファイルでこのファイルの出力を読み取ろうとすると、次のようになります

$json = file_get_contents(urlencode('json.php')); //same result without the urlencode
echo var_dump($jsonData);

json ファイルの内容ではなく、php コードを返します。これがなぜなのかわかりません。何かご意見は?

4

2 に答える 2

3

それは完全に正常です。メソッド「file_get_contents」はファイルのコンテンツを読み取りますが、ファイルに含まれる php スクリプトは実行しません。

これを行うには、「include」または「curl」を使用できます。

「include」は、ファイルを読み取り、そこに含まれる php スクリプトを現在のスクリプトに挿入します。「curl」は URL を呼び出すため、実際にはサーバーに php ファイルを要求します。

スクリプト内で「ヘッダー」を使用しているため、必要なものは「カール」ですが、「インクルード」で十分かもしれません。

CURL の例を次に示します。

$ch = curl_init("http://localhost/your/script.php");

curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HEADER, 0);

$json = json_decode(curl_exec($ch));
curl_close($ch);

より詳しい情報:

于 2013-10-02T08:12:11.280 に答える
0

json_encodeテストファイルで ed データを返すだけです。

// json_data.php 
return json_encode(array(
    'id' => 5,
    'name' => 'John'
));

そして、それらのデータを取得しますinclude

header('Content-Type: application/json');
$json = include 'json_data.php';
echo urlencode($json);

urlencodeまたは、スクリプトで既に編集されたデータを返すこともできjson_data.phpます。

return urlencode(json_encode(array(
    'id' => 5,
    'name' => 'John'
)));

うまくいけば、これはあなたを助けるでしょう。

于 2013-10-02T08:25:36.063 に答える