1

私はPHPで私に与える簡単な関数を持っています

HTTP エラー 500 (内部サーバー エラー):

コメントすると、単純なエコーが出力されます。

関数は次のとおりです。

error_reporting(E_ALL);
ini_set('display_errors', '1');
function invokeAuthenticationServiceAPI()
{

    $json = <<<"JSON"
            {
                "auth":
                    {
                    "username":"foo",
                    "password":"bar"
                    }
            }
    JSON;


    $data_string = json_decode($json);
    echo $data_string;
    /*
    $ch = curl_init('https://apirestserverdemo/api');                                                                      
    curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");                                                                     
    curl_setopt($ch, CURLOPT_POSTFIELDS, $data_string);                                                                  
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);                                                                      
    curl_setopt($ch, CURLOPT_HTTPHEADER, array(                                                                          
        'Content-Type: application/json',                                                                                
        'Content-Length: ' . strlen($data_string))                                                                       
    );                                                                                                                   

    $result = curl_exec($ch);   
    echo $result;
    */
}

HTML ファイルで次のように呼び出します。

<?php
    invokeAuthenticationServiceAPI();
?>

ご覧のとおり、残りの API サーバーに送信する必要があります。ただし、文字列から json へのフォーマットでのみ失敗します。

2 つの質問があります。

  1. 多分私はphpが好きではないことをしました。わかりましたが、「エラー 500 (内部サーバー エラー)」ではなく、何らかのエラー メッセージが表示されますか?
  2. 私は何を間違っていますか?
4

3 に答える 3

2

エラーの詳細については Web サーバーのエラー ログを確認してくださいJSON;JSON.

これを使用する必要があります:

    $json = <<<JSON
        {
            "auth":
                {
                "username":"foo",
                "password":"bar"
                }
        }
JSON; // no spaces before JSON;

これの代わりに:

    $json = <<<"JSON"
        {
            "auth":
                {
                "username":"foo",
                "password":"bar"
                }
        }
    JSON;

個人的には、phpで配列またはオブジェクトjson_encodeを生成し、正しい出力を生成するために使用します。

于 2013-06-14T15:21:52.500 に答える
1

前後の二重引用符を削除し、 PHP ヒアドキュメント構文JSONを無効にする余分なスペースを削除します

 $json = <<<"JSON"

する必要があります

$json = <<<JSON

お気に入り

<?php
$str = <<<JSON
{
                "auth":
                    {
                    "username":"foo",
                    "password":"bar"
                    }
            }

JSON;
echo $str;
?>
于 2013-06-14T15:22:52.803 に答える
0
  1. 500 Internal Server Error が発生した場合、ほぼ確実に PHP で致命的なエラーが発生しています。コードによっては、エラー ログにエラーが見つかる場合や、xdebugなどを使用してコードをデバッグする必要がある場合があります。
  2. JSON を引用符で囲む必要はありません。それ以外には、コードにすぐに問題はありません。ただし、json_encodeを使用して JSON を生成する必要があります。
于 2013-06-14T15:24:55.793 に答える