<?php
include_once $_SERVER['DOCUMENT_ROOT'] . '/include/shared-manual.inc';
$TOC = array();
$TOC_DEPRECATED = array();
$PARENTS = array();
include_once dirname(__FILE__) ."/toc/ref.filesystem.inc";
$setup = array (
  'home' => 
  array (
    0 => 'index.php',
    1 => 'PHP Manual',
  ),
  'head' => 
  array (
    0 => 'UTF-8',
    1 => 'ja',
  ),
  'this' => 
  array (
    0 => 'function.stat.php',
    1 => 'stat',
    2 => 'ファイルに関する情報を取得する',
  ),
  'up' => 
  array (
    0 => 'ref.filesystem.php',
    1 => 'ファイルシステム 関数',
  ),
  'prev' => 
  array (
    0 => 'function.set-file-buffer.php',
    1 => 'set_file_buffer',
  ),
  'next' => 
  array (
    0 => 'function.symlink.php',
    1 => 'symlink',
  ),
  'alternatives' => 
  array (
  ),
  'source' => 
  array (
    'lang' => 'ja',
    'path' => 'reference/filesystem/functions/stat.xml',
  ),
  'history' => 
  array (
  ),
);
$setup["toc"] = $TOC;
$setup["toc_deprecated"] = $TOC_DEPRECATED;
$setup["parents"] = $PARENTS;
manual_setup($setup);

contributors($setup);

?>
<div id="function.stat" class="refentry">
 <div class="refnamediv">
  <h1 class="refname">stat</h1>
  <p class="verinfo">(PHP 4, PHP 5, PHP 7, PHP 8)</p><p class="refpurpose"><span class="refname">stat</span> &mdash; <span class="dc-title">ファイルに関する情報を取得する</span></p>

 </div>
 
 <div class="refsect1 description" id="refsect1-function.stat-description">
  <h3 class="title">説明</h3>
  <div class="methodsynopsis dc-description">
   <span class="methodname"><strong>stat</strong></span>(<span class="methodparam"><span class="type"><a href="language.types.string.php" class="type string">string</a></span> <code class="parameter">$filename</code></span>): <span class="type"><span class="type"><a href="language.types.array.php" class="type array">array</a></span>|<span class="type"><a href="language.types.singleton.php" class="type false">false</a></span></span></div>

  <p class="para rdfs-comment">
   <code class="parameter">filename</code>で指定されたファイルに
   ついての統計情報を取得します。
   <code class="parameter">filename</code> がシンボリックリンクの場合、
   シンボリックリンクではなくファイルの実体の統計情報が返されます。
   Windows 環境、かつ PHP 7.4.0 より前の <abbr class="abbrev">NTS</abbr> ビルドでは、
   <code class="literal">size</code>,
   <code class="literal">atime</code>, <code class="literal">mtime</code>, <code class="literal">ctime</code>
   の統計情報は、シンボリックリンクの値が返されていました。
  </p>
  <p class="para">
   <span class="function"><a href="function.lstat.php" class="function">lstat()</a></span>
   はシンボリックリンクの統計情報を返すという違いを除いて
   <span class="function"><strong>stat()</strong></span> と等価です。
  </p>
 </div>


 <div class="refsect1 parameters" id="refsect1-function.stat-parameters">
  <h3 class="title">パラメータ</h3>
  <p class="para">
   <dl>
    
     <dt><code class="parameter">filename</code></dt>
     <dd>
      <p class="para">
       ファイルへのパス。
      </p>
     </dd>
    
   </dl>
  </p>
 </div>


 <div class="refsect1 returnvalues" id="refsect1-function.stat-returnvalues">
  <h3 class="title">戻り値</h3>
  <p class="para">
   <table class="doctable table">
    <caption><strong><span class="function"><strong>stat()</strong></span> と <span class="function"><a href="function.fstat.php" class="function">fstat()</a></span>
    の結果のフォーマット</strong></caption>
    
     <thead>
      <tr>
       <th>数値</th>
       <th>連想配列</th>
       <th>説明</th>
      </tr>

     </thead>

     <tbody class="tbody">
      <tr>
       <td>0</td>
       <td>dev</td>
       <td>デバイス番号 (***)</td>
      </tr>

      <tr>
       <td>1</td>
       <td>ino</td>
       <td>inode 番号(****)</td>
      </tr>

      <tr>
       <td>2</td>
       <td>mode</td>
       <td>inode プロテクトモード(*****)</td>
      </tr>

      <tr>
       <td>3</td>
       <td>nlink</td>
       <td>リンク数</td>
      </tr>

      <tr>
       <td>4</td>
       <td>uid</td>
       <td>所有者のユーザー ID(*)</td>
      </tr>

      <tr>
       <td>5</td>
       <td>gid</td>
       <td>所有者のグループ ID(*)</td>
      </tr>

      <tr>
       <td>6</td>
       <td>rdev</td>
       <td>inode デバイス の場合、デバイスの種類</td>
      </tr>

      <tr>
       <td>7</td>
       <td>size</td>
       <td>バイト単位のサイズ</td>
      </tr>

      <tr>
       <td>8</td>
       <td>atime</td>
       <td>最終アクセス時間 (Unix タイムスタンプ)</td>
      </tr>

      <tr>
       <td>9</td>
       <td>mtime</td>
       <td>最終修正時間 (Unix タイムスタンプ)</td>
      </tr>

      <tr>
       <td>10</td>
       <td>ctime</td>
       <td>最終 inode 変更時間 (Unix タイムスタンプ)</td>
      </tr>

      <tr>
       <td>11</td>
       <td>blksize</td>
       <td>ファイル IO のブロックサイズ(**)</td>
      </tr>

      <tr>
       <td>12</td>
       <td>blocks</td>
       <td>512 バイトのブロックの確保数(**)</td>
      </tr>

     </tbody>
    
   </table>

  </p>
  <p class="para">
   * Windows では常に <code class="literal">0</code> となります。
  </p>
  <p class="para">
   ** st_blksize タイプをサポートするシステムでのみ有効です。
   その他のシステム(例えば Windows)では <code class="literal">-1</code> を返します。
  </p>
  <p class="para">
   *** PHP 7.4.0 以降、Windows では、この値はファイルが含まれるボリュームのシリアル番号です。
   これは64ビットの <em>符号なし</em> 整数です。
   よって、オーバーフローする可能性があります。
   これより前のバージョンでは、<span class="function"><strong>stat()</strong></span> 関数ではドライブレターを数値で表現した値
   (たとえば、<code class="literal">C:</code> では <code class="literal">2</code>) でした。
   <span class="function"><a href="function.lstat.php" class="function">lstat()</a></span> 関数では <code class="literal">0</code> でした。
  </p>
  <p class="para">
   **** PHP 7.4.0 以降、Windows では、この値はファイルに関連付けられた識別子です。
   これは64ビットの <em>符号なし</em> 整数です。
   よって、オーバーフローする可能性があります。
   これより前のバージョンでは、この値は常に <code class="literal">0</code> でした。
  </p>
  <p class="para">
   ***** Windows では、
   読み取り専用のファイル属性に従って、
   書き込み可能のパーミッションビットが設定されます。
   そして、この値は全てのユーザ、グループ、
   オーナーについて、同じ値が報告されます。
   <span class="function"><a href="function.is-writable.php" class="function">is_writable()</a></span>
   とは異なり、ACL は考慮されません。
  </p>

  <p class="para">
  <code class="literal">mode</code> の値は、複数の関数によって読まれる情報が含まれています。
  8進数の場合、一番右の桁から評価され、はじめの3桁が <span class="function"><a href="function.chmod.php" class="function">chmod()</a></span> によって返されます。
  次の桁は PHP によって無視されます。その次の2桁は以下のファイルタイプを示します:
   <table class="doctable table">
    <caption><strong><code class="literal">mode</code> のファイルタイプ</strong></caption>
    
     <thead>
      <tr>
       <th><code class="literal">mode</code> が8進数だった場合</th>
       <th>意味</th>
      </tr>

     </thead>

     <tbody class="tbody">
      <tr>
       <td><strong><code>0140000</code></strong></td>
       <td>ソケット</td>
      </tr>

      <tr>
       <td><strong><code>0120000</code></strong></td>
       <td>リンク</td>
      </tr>

      <tr>
       <td><strong><code>0100000</code></strong></td>
       <td>通常のファイル</td>
      </tr>

      <tr>
       <td><strong><code>0060000</code></strong></td>
       <td>ブロックデバイス</td>
      </tr>

      <tr>
       <td><strong><code>0040000</code></strong></td>
       <td>ディレクトリ</td>
      </tr>

      <tr>
       <td><strong><code>0020000</code></strong></td>
       <td>キャラクタデバイス</td>
      </tr>

      <tr>
       <td><strong><code>0010000</code></strong></td>
       <td>fifo</td>
      </tr>

     </tbody>
    
   </table>

   よって、たとえば 通常のファイルは <strong><code>0100644</code></strong> のような値になりますし、
   ディレクトリは <strong><code>0040755</code></strong> のような値になります。
  </p>
  <p class="para">
   <span class="function"><strong>stat()</strong></span> はエラーの場合 <strong><code><a href="reserved.constants.php#constant.false">false</a></code></strong> を返します。
  </p>
  <blockquote class="note"><p><strong class="note">注意</strong>: <span class="simpara">
    PHP の数値型は符号付整数であり、
    多くのプラットフォームでは 32 ビットの整数を取るため、
    ファイルシステム関数の中には
    2GB より大きなファイルについては期待とは違う値を返すものがあります。
   </span></p></blockquote>
 </div>


 <div class="refsect1 errors" id="refsect1-function.stat-errors">
  <h3 class="title">エラー / 例外</h3>
  <p class="para">
   失敗した場合は <strong><code><a href="errorfunc.constants.php#constant.e-warning">E_WARNING</a></code></strong> が発生します。
  </p>
 </div>


 <div class="refsect1 changelog" id="refsect1-function.stat-changelog">
  <h3 class="title">変更履歴</h3>
  <table class="doctable informaltable">
   
    <thead>
     <tr>
      <th>バージョン</th>
      <th>説明</th>
     </tr>

    </thead>

    <tbody class="tbody">
     <tr>
      <td>7.4.0</td>
      <td>
       Windows では、
       デバイス番号は、ファイルが含まれるボリュームのシリアル番号を返すようになりました。
       そして、inode 番号は、ファイルに関連付けられた識別子を返すようになりました。
      </td>
     </tr>

     <tr>
      <td>7.4.0</td>
      <td>
       シンボリックリンクの場合、
       <code class="literal">size</code>, <code class="literal">atime</code>, <code class="literal">mtime</code>,
       <code class="literal">ctime</code> の統計情報は、ファイルの実体の値が返されるようになりました。
       これより前のバージョンの Windows NTS ビルドはそうではありませんでした。
      </td>
     </tr>

    </tbody>
   
  </table>

 </div>


 <div class="refsect1 examples" id="refsect1-function.stat-examples">
  <h3 class="title">例</h3>
  <p class="para">
   <div class="example" id="example-1">
    <p><strong>例1 <span class="function"><strong>stat()</strong></span> の例</strong></p>
    <div class="example-contents">
<div class="phpcode"><code><span style="color: #000000"><span style="color: #0000BB">&lt;?php<br /></span><span style="color: #FF8000">/* ファイルの状態を取得します */<br /></span><span style="color: #0000BB">$stat </span><span style="color: #007700">= </span><span style="color: #0000BB">stat</span><span style="color: #007700">(</span><span style="color: #DD0000">'C:\php\php.exe'</span><span style="color: #007700">);<br /><br /></span><span style="color: #FF8000">/*<br /> * ファイルのアクセス日時を表示します。<br /> * これは fileatime() をコールするのと同じです<br /> */<br /></span><span style="color: #007700">echo </span><span style="color: #DD0000">'アクセス日時: ' </span><span style="color: #007700">. </span><span style="color: #0000BB">$stat</span><span style="color: #007700">[</span><span style="color: #DD0000">'atime'</span><span style="color: #007700">];<br /><br /></span><span style="color: #FF8000">/*<br /> * ファイルの更新日時を表示します。<br /> * これは filemtime() をコールするのと同じです<br /> */<br /></span><span style="color: #007700">echo </span><span style="color: #DD0000">'更新日時: ' </span><span style="color: #007700">. </span><span style="color: #0000BB">$stat</span><span style="color: #007700">[</span><span style="color: #DD0000">'mtime'</span><span style="color: #007700">];<br /><br /></span><span style="color: #FF8000">/* デバイス番号を表示します */<br /></span><span style="color: #007700">echo </span><span style="color: #DD0000">'デバイス番号: ' </span><span style="color: #007700">. </span><span style="color: #0000BB">$stat</span><span style="color: #007700">[</span><span style="color: #DD0000">'dev'</span><span style="color: #007700">];<br /></span><span style="color: #0000BB">?&gt;</span></span></code></div>
    </div>

   </div>
  </p>
  <p class="para">
   <div class="example" id="example-2">
    <p><strong>例2 <span class="function"><strong>stat()</strong></span> の情報を <span class="function"><a href="function.touch.php" class="function">touch()</a></span> と組み合わせる例</strong></p>
    <div class="example-contents">
<div class="phpcode"><code><span style="color: #000000"><span style="color: #0000BB">&lt;?php<br /></span><span style="color: #FF8000">/* ファイルの状態を取得します */<br /></span><span style="color: #0000BB">$stat </span><span style="color: #007700">= </span><span style="color: #0000BB">stat</span><span style="color: #007700">(</span><span style="color: #DD0000">'C:\php\php.exe'</span><span style="color: #007700">);<br /><br /></span><span style="color: #FF8000">/* 情報の取得に失敗した? */<br /></span><span style="color: #007700">if (!</span><span style="color: #0000BB">$stat</span><span style="color: #007700">) {<br />    echo </span><span style="color: #DD0000">'stat() のコールに失敗しました...'</span><span style="color: #007700">;<br />} else {<br />    </span><span style="color: #FF8000">/*<br />     * アクセス日時を、現在のアクセス日時の<br />     * 一週間後に設定します<br />     */<br />    </span><span style="color: #0000BB">$atime </span><span style="color: #007700">= </span><span style="color: #0000BB">$stat</span><span style="color: #007700">[</span><span style="color: #DD0000">'atime'</span><span style="color: #007700">] + </span><span style="color: #0000BB">604800</span><span style="color: #007700">;<br /><br />    </span><span style="color: #FF8000">/* ファイルを作成します */<br />    </span><span style="color: #007700">if (!</span><span style="color: #0000BB">touch</span><span style="color: #007700">(</span><span style="color: #DD0000">'some_file.txt'</span><span style="color: #007700">, </span><span style="color: #0000BB">time</span><span style="color: #007700">(), </span><span style="color: #0000BB">$atime</span><span style="color: #007700">)) {<br />        echo </span><span style="color: #DD0000">'ファイルの作成に失敗しました...'</span><span style="color: #007700">;<br />    } else {<br />        echo </span><span style="color: #DD0000">'touch() が成功しました...'</span><span style="color: #007700">;<br />    }<br />}<br /></span><span style="color: #0000BB">?&gt;</span></span></code></div>
    </div>

   </div>
  </p>
 </div>


 <div class="refsect1 notes" id="refsect1-function.stat-notes">
  <h3 class="title">注意</h3>
  <blockquote class="note"><p><strong class="note">注意</strong>: <p class="para">時刻の精度は、
ファイルシステムによって異なることがあります。</p></p></blockquote>
  <blockquote class="note"><p><strong class="note">注意</strong>: <span class="simpara">この関数の結果は
キャッシュされます。詳細は、<span class="function"><a href="function.clearstatcache.php" class="function">clearstatcache()</a></span>
を参照してください。</span></p></blockquote>
  <div class="tip"><strong class="tip">ヒント</strong><p class="simpara">
<code class="literal">PHP 5.0.0</code> 以降、この関数は、
<em>何らかの</em> URL ラッパーと組合せて使用することができます。
どのラッパーが <span class="function"><strong>stat()</strong></span> ファミリーをサポートしているかを調べるには
<a href="wrappers.php" class="xref">サポートするプロトコル/ラッパー</a> を参照してください。</p></div>
 </div>


 <div class="refsect1 seealso" id="refsect1-function.stat-seealso">
  <h3 class="title">参考</h3>
  <p class="para">
   <ul class="simplelist">
    <li><span class="function"><a href="function.lstat.php" class="function" rel="rdfs-seeAlso">lstat()</a> - ファイルあるいはシンボリックリンクの情報を取得する</span></li>
    <li><span class="function"><a href="function.fstat.php" class="function" rel="rdfs-seeAlso">fstat()</a> - オープンしたファイルポインタからファイルに関する情報を取得する</span></li>
    <li><span class="function"><a href="function.filemtime.php" class="function" rel="rdfs-seeAlso">filemtime()</a> - ファイルの更新時刻を取得する</span></li>
    <li><span class="function"><a href="function.filegroup.php" class="function" rel="rdfs-seeAlso">filegroup()</a> - ファイルのグループを取得する</span></li>
    <li><span class="classname"><a href="class.splfileinfo.php" class="classname">SplFileInfo</a></span></li>
   </ul>
  </p>
 </div>


</div><?php manual_footer($setup); ?>