PHPのディレクトリまとめ


PHPのパス、ファイルの取得方法の調査。
`$_ENV`、`$_SERVER`から取得できるディレクトリパス。
「`$_SERVER`」はWebサーバにより生成されるサーバ情報および実行時の環境情報。
「`$_ENV`」はサーバ側で設定されている環境変数。

dir.php

```php
var_dump($_SERVER['HTTP_HOST']);
var_dump($_SERVER['SERVER_NAME']);
var_dump($_SERVER['DOCUMENT_ROOT']);
var_dump($_SERVER['SCRIPT_FILENAME']);
var_dump($_SERVER['SCRIPT_NAME']);
var_dump($_SERVER['PHP_SELF']);
var_dump($_SERVER['REQUEST_URI']);
var_dump(__FILE__);
var_dump(__DIR__);
var_dump(__LINE__);
var_dump(dirname(__FILE__));
var_dump(dirname(__DIR__));
var_dump(dirname($_SERVER['SCRIPT_NAME']));
var_dump(basename(__FILE__));
var_dump(basename(__DIR__));
var_dump(basename($_SERVER['REQUEST_URI']));
```

### ディレクトリパス取得一覧
ドキュメントルート：/var/www/html
URL：http://example.localhost/dir1/dir2/phpdir.php?test=aaa
にアクセスした場合

|              | 変数名                              | 例                              | 説明                                                             | 
|--------------|-------------------------------------|---------------------------------|------------------------------------------------------------------|
| `$_SERVER`   | `$_SERVER['HTTP_HOST']`             | example.localhost               | リクエストヘッダに含まれるHOST<br>**XSSの危険性あり**            |
|              | `$_SERVER['SERVER_NAME']`           | example.localhost               | Apacheの設定ファイル等に<br>記述されているSERVER_NAME            |
|              | `$_SERVER['DOCUMENT_ROOT']`         | /var/www/html                   | ドキュメントルートのフルパス                                     |
|              | `$_SERVER['SCRIPT_FILENAME']`       | /var/www/html/dir1/dir2/dir.php | フルパスとファイル名                                             |
|              | `$_SERVER['SCRIPT_NAME']`           | /dir1/dir2/dir.php              | 実行されたPHPのパスとファイル名                                  |
|              | `$_SERVER['PHP_SELF']`              | /dir1/dir2/dir.php              | リクエストされたパスとファイル名<br>**XSSの危険性あり**          |
|              | `$_SERVER['REQUEST_URI']`           | /dir1/dir2/dir.php?test=aaa     | リクエストされた<br>パスとファイル名とクエリ<br>**XSSの危険性あり**  |
| `__XXXX__`   | `__FILE__`                          | \var\www\html\dir1\dir2\dir.php | 実行されたPHPのフルパス                                          |
|              | `__DIR__`                           | \var\www\html\dir1\dir2         | 実行されたPHPのディレクトリ名<br>「`dirname(__FILE__)`」 と同じ  |
|              | `__LINE__`                          | 12                              | 実行されたPHPのファイル行番号                                    |
| `dirname()`  | `dirname(__FILE__)`                 | \var\www\html\dir1\dir2         | 実行されたPHPのディレクトリまでの<br>フルパス                        |
|              | `dirname(__DIR__)`                  | \var\www\html\dir1              | 「実行されたPHPのディレクトリ」<br>のディレクトリまでのフルパス  |
|              | `dirname($_SERVER['SCRIPT_NAME'])`  | /dir1/dir2                      | 実行されたPHPのディレクトリのパス                                |
|              | `dirname($_SERVER['REQUEST_URI'])`  | /dir1/dir2                      | リクエストされたPHPのパス<br>**XSSの危険性あり**                 |
| `basename()` | `basename(__FILE__)`                | dir.php                         | 実行されたPHPのファイル名                                        |
|              | `basename(__DIR__)`                 | dir2                            | 「実行されたPHPのディレクトリ」<br>のディレクトリ名              |
|              | `basename($_SERVER['SCRIPT_NAME'])` | dir.php                         | 実行されたPHPのファイル名                                        |
|              | `basename($_SERVER['REQUEST_URI'])` | dir.php?test=aaa                | リクエストされたファイル名とクエリ<br>**XSSの危険性あり**        |