起こっている事象
PHPのissetにてエラーが発生し、HTTP500 内部サーバーエラーが出力される。
HTTP POSTされたJSON本文のbodyを受け取り、
その中にaccess_tokenが存在するかを判定するコードです。
if (!isset($access_token)) {の部分でエラーが発生しています。
PHP
1 $json_string = file_get_contents('php://input'); 2 $obj = json_decode($json_string); 3 $access_token = $obj->{'access_token'}; 4 5 if (!isset($access_token)) { 6 ----something code 7 }
500エラーでは画面上でエラーは確認できないはずですが、どうやってissetが問題であると分かったのでしょうか。その前で発生しているとしか思えませんが
$json_stringに何が入っているのか提示してください。
Webサーバのエラーログを確認して、PHP の具体的なエラーメッセージを確認してください。 ソースコードの全文が提示されていないので、添付のコードからエラーメッセージを推測するのは困難です。
コードが$json_string = file_get_contents('php://input');スタートであり、issetまでの3行を1行ずつコメントアウトして実行してもHTTP500にはなりませんでした。またissetではなく、if(true)とすると正常に実行できたことからissetがエラーの原因であると仮定しました。
something codeの前が全角空白となっていますので紛らわしいですね。いずれにしてもサーバーのログを確認された方が良いです。500エラーの原因はPHPのコードだけによるとは限りません。取得したデータ自体にあるかもしれません。それは情報を全て検証しないと分からないので提示できる情報は全て提示してください。
"!isset($access_token)"は、$access_tokenがnullの時にTRUEになります(issetは引数がNULLだとFalseを返します)。 issetまでの3行をコメントアウトすると$access_tokenがNULLになる(どこでも代入されない)ので,if文の条件が成立して本体が実行されるはず。でも、HTTP500にはならないのですか?
回答1件
あなたの回答
tips
プレビュー