「PHPの基礎 - ファイル」の版間の差分
ナビゲーションに移動
検索に移動
(→アップロード) |
|||
(同じ利用者による、間の1版が非表示) | |||
25行目: | 25行目: | ||
<br><br> | <br><br> | ||
== __FILE__ | == __FILE__ と $_SERVER["SCRIPT_NAME"] == | ||
==== __FILE__ ==== | ==== __FILE__ ==== | ||
__FILE__は、スクリプトファイルの絶対パス (フルパス) を返す。<br> | __FILE__は、スクリプトファイルの絶対パス (フルパス) を返す。<br> | ||
59行目: | 59行目: | ||
* URL生成 | * URL生成 | ||
* リダイレクト処理 | * リダイレクト処理 | ||
*: ページのリロード : <code>header("location: $_SERVER["SCRIPT_NAME"]");</code> | |||
* パスの相対参照 | * パスの相対参照 | ||
<br> | <br> | ||
==== 差異 ==== | ==== 差異 ==== | ||
<syntaxhighlight lang="php"> | <syntaxhighlight lang="php"> |
2024年11月21日 (木) 10:54時点における最新版
概要
アップロード
スーパーグローバル変数である配列$_FILES
において、tmp_name
キーはPHPによって決められた固定の配列キー名である。
PHPでファイルアップロードを処理する場合、配列$_FILESには決められたキーが必ず含まれる。
- tmp_name
- PHPが自動的に生成する一時ファイルのパス
- name
- アップロードされた元のファイル名
- type
- ファイルのMIMEタイプ
- ただし、クライアントから送信されたタイプが設定されているだけであり、拡張子が偽装されている可能性もあるため、
- 実際のタイプをサーバ側で確認する必要がある。
- size
- ファイルサイズ (バイト)
- error
- アップロード時のエラーコード
// 'xxx'の部分はフォームのname属性で自由に決められるが、'tmp_name'等の第2レベルのキーはPHPによって決められた固定値である。
$temp_path = $_FILES['xxx']['tmp_name']; // 'tmp_name'は固定
__FILE__ と $_SERVER["SCRIPT_NAME"]
__FILE__
__FILE__は、スクリプトファイルの絶対パス (フルパス) を返す。
これは、常にファイルシステム上の実際のパスを示す。
インクルードされたファイル内で使用する場合は、メインスクリプトのファイルのパスを返す。
また、シンボリックリンクの場合、実際のファイルパスを返す。
主な使用ケース
- ファイルシステム操作
- 設定ファイルの読み込み
- ログファイルの作成
// ファイルパスが /var/www/html/example/test.php に存在する場合
echo __FILE__; // 出力: /var/www/html/example/test.php
$_SERVER["SCRIPT_NAME"]
$_SERVER["SCRIPT_NAME"]は、Webサーバのドキュメントルートからの相対パスを返す。
これは、URLでアクセスされたパスを示す。
また、シンボリックリンクの場合はリンクのパスを返す。
HTTPリクエストに関連する情報を提供する時に使用する。
// URLが http://example.com/example/test.php の場合
echo $_SERVER["SCRIPT_NAME"]; // 出力: /example/test.php
主な使用ケース
- URL生成
- リダイレクト処理
- ページのリロード :
header("location: $_SERVER["SCRIPT_NAME"]");
- ページのリロード :
- パスの相対参照
差異
// ファイルパス: /var/www/html/example/test.php
// URL: http://example.com/example/test.php
echo __FILE__; // 出力: /var/www/html/example/test.php
echo $_SERVER["SCRIPT_NAME"]; // 出力: /example/test.php
// インクルードファイル (/var/www/html/example/includes/header.php) 内での場合
echo __FILE__; // 出力: /var/www/html/example/includes/header.php
echo $_SERVER["SCRIPT_NAME"]; // 出力: /example/test.php (メインスクリプトのまま)