CakeFest 2017 NYC, the Official CakePHP Conference


(PHP 4, PHP 5, PHP 7)

include_once bindet eine angegebene Datei ein und führt sie als PHP-Skript aus. Dieses Verhalten ist identisch zu include, mit dem einzigen Unterschied, dass die Datei, wenn sie bereits eingebunden wurde, nicht erneut eingebunden wird, und include_once TRUE zurückgibt. Wie der Name schon sagt, wird die Datei nur einmal eingebunden werden.

include_once kann beispielsweise benutzt werden, wenn die selbe Datei an mehreren Stellen eingebunden wird, um Problemen durch erneute Definitionen von Funktionen, erneute Zuweisung von Variablen oder ähnliches zu vermeiden.

Für die Funktionsweise der Funktion, siehe die Dokumentation zu include.


Mit PHP 4 wird auf Betriebssystemen, die bei Dateinamen nicht zwischen Groß- und Kleinschreibung unterscheiden (wie Windows), bei _once dennoch zwischen Groß- und Kleinschreibung unterschieden, wie das folgende Beispiel zeigt:

Beispiel #1 include_once mit einem case-insensitive Betriebssystem und PHP 4

include_once "a.php"// a.php wird eingebunden.
include_once "A.php"// a.php wird nochmal eingebunden! (Nur in PHP 4)

Dieses Verhalten hat sich in PHP 5 geändert, so dass zum Beispiel bei Windows der Pfad zuerst normalisiert wird, sodass C:\PROGRA~1\A.php und C:\Program Files\a.php als das selbe erkannt und nur einmal eingebunden werden.

add a note add a note

User Contributed Notes 7 notes

roach dot scott+spam at googlemail dot com
8 years ago
If you include a file that does not exist with include_once, the return result will be false.

If you try to include that same file again with include_once the return value will be true.

(include_once 'fakefile.ext'); // bool(false)
var_dump(include_once 'fakefile.ext'); // bool(true)

This is because according to php the file was already included once (even though it does not exist).
Greg McCarthy
1 month ago
In response to what a user wrote 8 years ago regarding include_once being ran two times in a row on a non-existent file:

Perhaps 8 years ago that was the case, however I have tested in PHP 5.6, and I get this:

$result = include_once 'fakefile.php';  // $result = false
$result = include_once 'fakefile.php'   // $result is still false
xcl_rockman at qq dot com
1 year ago
return array("test">1);

$config = include_once("config.php");

$config = include_once("config.php");

output will be

webmaster AT domaene - kempten DOT de
10 years ago
Since I like to reuse a lot of code it came handy to me to begin some sort of library that I stored in a subdir
e.g. "lib"

The only thing that bothered me for some time was that although everything worked all IDEs reported during editing
these useless warnings "file not found" when library files included other library files, since my path were given all relative to the corresponding document-root.

Here is a short workaround that makes that gone:

// Change to your path

if(strpos(__FILE__,'/lib/') != FALSE){
include_once (
// ... or any other include[_once] / require[_once]

just adjust the path and it will be fine - also for your IDE.

1083706899 at qq dot com
1 year ago
require_once() can check the file if once include ,or the file is wrong will tell a error and quit the script.
flobee at gmail dot com
11 years ago
i already had a discussion with several people about "not shown errors"
error reporting and all others in php.ini set to: "show errors" to find problems:
the answer i finally found:
if you have an "@include..." instead of "include..." or "require..('somthing') in any place in your code
all following errors are not shown too!!!

so, this is actually a bad idea when developing because paser errors will be droped too:
if(!@include_once('./somthing') ) {
'can not include';

if(!@file_exists('./somthing') ) {
'can not include';
} else {
emanuele at rogledi dot com
8 years ago
For include_once a file in every paths of application we can do simply this

include_once($_SERVER["DOCUMENT_ROOT"] . "mypath/my2ndpath/myfile.php");
To Top