PHP 8.5.0 RC4 available for testing

require

(PHP 4, PHP 5, PHP 7, PHP 8)

require is identical to include except upon failure it will also produce an Error exception (E_COMPILE_ERROR level error prior to PHP 8.0.0) whereas include will only produce a warning (E_WARNING level error).

See the include documentation for how this works.

add a note

User Contributed Notes 3 notes

up
165
chris at chrisstockton dot org
18 years ago
Remember, when using require that it is a statement, not a function. It's not necessary to write:
<?php
require('somefile.php');
?>

The following:
<?php
require 'somefile.php';
?>

Is preferred, it will prevent your peers from giving you a hard time and a trivial conversation about what require really is.
up
28
Marcel Baur
4 years ago
If your included file returns a value, you can get it as a result from require(), i.e.

foo.php:
<?php
return "foo";
?>

$bar = require("foo.php");
echo $bar; // equals to "foo"
up
9
jave dot web at seznam dot cz
1 year ago
Always use __DIR__ to define path relative to your current __FILE__.
(Or another setting that is originally based on __DIR__/__FILE__)

try & catch - don't get confused by the words "fatal E_COMPILE_ERROR" - it's still just an internal Error that implements Throwable - it can be caught:

<?php
try {
require(
__DIR__ . '/something_that_does_not_exist');
} catch (
\Throwable $e) {
echo
"This was caught: " . $e->getMessage();
}
echo
" End of script.";
?>

Note that this will still emit a warning "Failed to open stream: No such file or directory..." ...unless you prefix the require with "@" - which I strongly don't recommend as it would ignore/supress any diagnostic error (unless you have specified set_error_handler()). But even if you'd prefix the require with "@" it would still be caught.
To Top