downloads | documentation | faq | getting help | mailing lists | licenses | wiki | reporting bugs | php.net sites | links | conferences | my php.net

search for in the

get_loaded_extensions> <get_include_path
Last updated: Fri, 06 Nov 2009

view this page in

get_included_files

(PHP 4, PHP 5)

get_included_filesinclude または require で読み込まれたファイルの名前を配列として返す

説明

array get_included_files ( void )

この関数は、include(), include_once(), require(), require_once() によりスクリプトにロードされた すべてのファイルの名前を取得します。

返り値

すべてのファイル名を含む配列を返します。

最初にコールされたスクリプトは "include されたファイル" という扱いに なります。そのため、include() やその仲間たちにより 読み込まれたファイルの一覧に含めて表示されます。

複数回読み込まれているファイルも、 返される配列には一度しかあらわれません。

変更履歴

バージョン 説明
4.0.1 PHP 4.0.1および以前のバージョンにおいて、 get_included_files() は読み込まれるファイルが拡張子 .php となることを仮定しており、他の拡張子のファイルは返されませんでした。 get_included_files() により返される配列は 連想配列であり、include() および include_once() で読み込まれたファイルのみが 一覧に含まれていました。

例1 get_included_files() の例

<?php
// このファイルは abc.php です

include 'test1.php';
include_once 
'test2.php';
require 
'test3.php';
require_once 
'test4.php';

$included_files get_included_files();

foreach (
$included_files as $filename) {
    echo 
"$filename\n";
}

?>

上の例の出力は以下となります。

abc.php
test1.php
test2.php
test3.php
test4.php

注意

注意: 設定ディレクティブ auto_prepend_file で読み込まれたファイルは、返される配列には含まれません。

参考



get_loaded_extensions> <get_include_path
Last updated: Fri, 06 Nov 2009
 
add a note add a note User Contributed Notes
get_included_files
cleggypdc at gmail dot com
24-Jun-2008 01:47
If you want to get the relative path of an included file, from within itself use this function. If you ever have a include file thats path may not be static, this can save some time.

<?php
 
function get_current_files_path($file_name)
 {
  
//find the current files directory
  
$includes = get_included_files();
  
$path = "";
   for (
$i=0; $i < count($includes); $i++)
   {
    
$path = strstr($includes[$i], $file_name);
     if (
$path != false)
     {
      
$key = $i;
       break;
     }
   }
  
$path = str_replace(getcwd(), "", $includes[$key]);
  
$path = str_replace("\\", "/", $path);
  
$path = str_replace($file_name, "", $path);
  
$path = ltrim($path, "/");
  
   return
$path;
 }
?>
sam at consideropen dot com
30-May-2008 05:57
If you want to avoid the filepaths, just wrap get_included_files() inside preg_replace() to get rid of path info:

<?php
$filenames
= preg_replace("/\/.*\//", "", get_included_files());
?>
yarco dot w at gmail dot com
04-Jul-2007 12:27
If you have a MAIN php script which you don't want to be included by other scripts, you could use this function. For example:

main.php:
<?php
function blockit()
{
 
$buf = get_included_files();
  return
$buf[0] != __FILE__;
}

blockit() and exit("You can not include a MAIN file as a part of your script.");

print
"OK";
?>

So other script couldn't include main.php to modify its internal global vars.
indigohaze at gmail dot com
29-Aug-2006 02:30
Something that's not noted in the docs, if a file is included remotely and you do a get_included_files() in the include itself it will *not* return the document that included it.

ie:
test2.php (server 192.168.1.14):
<?php

include("http://192.168.1.11/test/test3.php");

?>

test3.php (server 192.168.1.11):

<?php

$files
= get_included_files();

print_r($files);
?>

returns:

Array ( [0] => /var/www/localhost/htdocs/test/test3.php )

Which means you can use get_included_files() to help intercept and prevent XSS-style attacks against your code.
RPaseur at NationalPres dot org
09-Mar-2006 01:04
As is often the case, YMMV.  I tried the __FILE__ and SCRIPT_FILENAME comparison and found this:

SCRIPT_FILENAME: /var/www/cgi-bin/php441
__FILE__: /raid/home/natpresch/natpresch/RAY_included.php

As an alternative:

count(get_included_files());

Gives one when the script is standalone and always more than one when the script is included.
keystorm :at: gmail dotcom
08-Sep-2004 06:08
As of PHP5, this function seems to return an array with the first index being the script all subsequent scripts are included to.
If index.php includes b.php and c.php and calls get_included_files(), the returned array looks as follows:

index.php
a.php
b.php

while in PHP<5 the array would be:

a.php
b.php

If you want to know which is the script that is including current script you can use $_SERVER['SCRIPT_FILENAME'] or any other similar server global.

If you also want to ensure current script is being included and not run independently you should evaluate following expression:

__FILE__ != $_SERVER['SCRIPT_FILENAME']

If this expression returns TRUE, current script is being included or required.

get_loaded_extensions> <get_include_path
Last updated: Fri, 06 Nov 2009
 
 
show source | credits | stats | sitemap | contact | advertising | mirror sites