Попробовать Catch не может работать с require_once в PHP?
Я не могу сделать что-то вроде этого?
try {
require_once( '/includes/functions.php' );
}
catch(Exception $e) {
echo "Message : " . $e->getMessage();
echo "Code : " . $e->getCode();
}
Ошибка не отражается, сервер возвращает 500.
Ответы
Ответ 1
Вы можете сделать это с помощью 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();
}
Ответ 2
Как вы можете прочитать здесь: (emph mine)
require() идентичен include() кроме случаев неудачи, создать смертельный E_COMPILE_ERROR уровень ошибка. Другими словами, он остановится script
Это требует, но это эквивалентно require_once(). Это не захватывающая ошибка.
Кстати, вам нужно ввести абсолютный путь, и я не думаю, что это правильно:
require_once( '/includes/functions.php' );
Вам может понадобиться что-то вроде этого
require_once( './includes/functions.php' );
Или, если вы вызываете это из поддира или из файла, который включен в разные директории, вам может понадобиться что-то вроде
require_once( '/var/www/yourPath/includes/functions.php' );
Ответ 3
Это должно работать, но это немного хак.
if([email protected]_once("path/to/script.php")) {
//Logic here
}