Попробовать Catch не может работать с require_once в PHP?

Я не могу сделать что-то подобное?

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 }