「PHPの基礎 - ファイル」の版間の差分

提供:MochiuWiki : SUSE, EC, PCB
ナビゲーションに移動 検索に移動
(ページの作成:「== 概要 == <br><br> == アップロード == スーパーグローバル変数である配列<code>$_FILES</code>において、<code>tmp_name</code>キーはPHPによって決められた固定の配列キー名である。<br> <br> PHPでファイルアップロードを処理する場合、配列$_FILESには決められたキーが必ず含まれる。<br> * tmp_name *: PHPが自動的に生成する一時ファイルのパス * name *: アップロードさ…」)
 
22行目: 22行目:
  // 'xxx'の部分はフォームのname属性で自由に決められるが、'tmp_name'等の第2レベルのキーはPHPによって決められた固定値である。
  // 'xxx'の部分はフォームのname属性で自由に決められるが、'tmp_name'等の第2レベルのキーはPHPによって決められた固定値である。
  $temp_path = $_FILES['xxx']['tmp_name'];  // 'tmp_name'は固定
  $temp_path = $_FILES['xxx']['tmp_name'];  // 'tmp_name'は固定
</syntaxhighlight>
<br><br>
== __FILE__ / $_SERVER["SCRIPT_NAME"] ==
==== __FILE__ ====
__FILE__は、スクリプトファイルの絶対パス (フルパス) を返す。<br>
これは、常にファイルシステム上の実際のパスを示す。<br>
<br>
インクルードされたファイル内で使用する場合は、メインスクリプトのファイルのパスを返す。<br>
また、シンボリックリンクの場合、実際のファイルパスを返す。<br>
<br>
主な使用ケース<br>
* ファイルシステム操作
* 設定ファイルの読み込み
* ログファイルの作成
<br>
<syntaxhighlight lang="php">
// ファイルパスが /var/www/html/example/test.php に存在する場合
echo __FILE__;  // 出力: /var/www/html/example/test.php
</syntaxhighlight>
<br>
==== $_SERVER["SCRIPT_NAME"] ====
$_SERVER["SCRIPT_NAME"]は、Webサーバのドキュメントルートからの相対パスを返す。<br>
これは、URLでアクセスされたパスを示す。<br>
<br>
また、シンボリックリンクの場合はリンクのパスを返す。<br>
<br>
HTTPリクエストに関連する情報を提供する時に使用する。<br>
<br>
<syntaxhighlight lang="php">
// URLが http://example.com/example/test.php の場合
echo $_SERVER["SCRIPT_NAME"];  // 出力: /example/test.php
</syntaxhighlight>
<br>
主な使用ケース<br>
* URL生成
* リダイレクト処理
* パスの相対参照
<br>
==== 差異 ====
<syntaxhighlight lang="php">
// ファイルパス: /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 (メインスクリプトのまま)
  </syntaxhighlight>
  </syntaxhighlight>
<br><br>
<br><br>

2024年11月21日 (木) 08:36時点における版

概要



アップロード

スーパーグローバル変数である配列$_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生成
  • リダイレクト処理
  • パスの相対参照


差異

 // ファイルパス: /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 (メインスクリプトのまま)