Я не могу сделать что-то подобное?
try { require_once( '/includes/functions.php' ); } catch(Exception $e) { echo "Message : " . $e->getMessage(); echo "Code : " . $e->getCode(); }
Ошибка не отражается, сервер возвращает 500.
Вы можете сделать это с помощью include_once
или file_exists
:
try { if (! @include_once( '/includes/functions.php' )) // @ - to suppress warnings, // you can also use error_reporting function for the same purpose which may be a better option throw new Exception ('functions.php does not exist'); // or if (!file_exists('/includes/functions.php' )) throw new Exception ('functions.php does not exist'); else require_once('/includes/functions.php' ); } catch(Exception $e) { echo "Message : " . $e->getMessage(); echo "Code : " . $e->getCode(); }
Как вы можете прочитать здесь : (emph my)
require () идентичен include (), за исключением отказа, он также приведет к фатальной ошибке уровня E_COMPILE_ERROR . Другими словами, он остановит скрипт
Это требует, но это эквивалентно require_once (). Это не захватывающая ошибка.
Кстати, вам нужно ввести абсолютный путь, и я не думаю, что это правильно:
require_once( '/includes/functions.php' );
Вам может понадобиться что-то вроде этого
require_once( './includes/functions.php' );
Или, если вы вызываете это из subdir или из файла, который включен в разные директории, вам может понадобиться что-то вроде
require_once( '/var/www/yourPath/includes/functions.php' );
Это должно работать, но это немного взломать.
if(!@include_once("path/to/script.php")) { //Logic here }