LoginSignup
3
1

More than 5 years have passed since last update.

phpのスーパーグローバル変数+curlコマンド 簡単にまとめてみた

Last updated at Posted at 2017-09-24

apiを叩きにいくときやajaxのテストなどで生のcurlコマンドを実行することが多かったので簡単にまとめてみました。

php側では対象のスーパーグローバル変数をvar_dumpして出力しているものとします。

$_GET

unix
$ curl "http://test.com/?id=1"
出力
array(1) {
  ["id"]=>
  string(1) "1"
}

$_POST

unix
$ curl "http://test.com/" -X "POST" -F "id=1" -F "name=manato"
出力
array(2) {
  ["id"]=>
  string(1) "1"
  ["name"]=>
  string(6) "manato"
}

$_FILES

unix
$ curl "http://test.com/" -F "uploaded_image=@test.jpg"
出力
array(1) {
  ["uploaded_image"]=>
  array(5) {
    ["name"]=>
    string(11) "test.jpg"
    ["type"]=>
    string(10) "image/jpeg"
    ["tmp_name"]=>
    string(14) "/tmp/php9Hmedz"
    ["error"]=>
    int(0)
    ["size"]=>
    int(234601)
  }
}

コマンドを実行したディレクトリに画像がなかったりファイル名が間違っているとこんなエラーが出ました。

curl: (26) couldn't open file "test.jpg"

$_COOKIE

unix
$ curl "http://test.com/" -H 'Cookie: user_id=1'
出力
array(1) {
  ["user_id"]=>
  string(1) "1"
}

$_SERVER

unix
$ curl "http://test.com/" -H 'token: testtest'
出力
array(29) {
 (省略)
  ["HTTP_TOKEN"]=>
  string(8) "testtest"
}

curlコマンドのオプション-Hはヘッダー情報を付加できますが
それをphp側で受け取るには$_SERVER['HTTP_XXX']で取得できるようです。(XXXは指定した文字列の大文字)

なので上の例だとHTTP_TOKENとなります。

また、$_COOKIEのコマンドを打った際もvar_dump($_SERVER)の結果はこうなっていました。

出力
array(29) {
 (省略)
  ["HTTP_COOKIE"]=>
  string(10) "userid=78C"
}

ヘッダー情報の一つなので$_SERVERにも入っているということですね。

まとめ

上から順に$_GET, $_POST, $_FILES, $_COOKIE, $_SERVERのコマンドです。

$ curl "http://test.com/?id=1"
$ curl "http://test.com/" -X "POST" -F "id=1" -F "name=manato"
$ curl "http://test.com/" -F "uploaded_image=@test.jpg"
$ curl "http://test.com/" -H 'Cookie: user_id=1'
$ curl "http://test.com/" -H 'token: testtest'
-Hオプションの結果は$_SERVER['HTTP_任意の文字列大文字']で取得可能。
$ curl "http://test.com/" -H 'age: 20'
echo $_SERVER_['HTTP_AGE']; // => 20

以上、簡単にcurlコマンドについてまとめました。

3
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
1