Подтвердить что ты не робот

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

Я не могу сделать что-то вроде этого?

try {
    require_once( '/includes/functions.php' );      
}
catch(Exception $e) {    
    echo "Message : " . $e->getMessage();
    echo "Code : " . $e->getCode();
}

Ошибка не отражается, сервер возвращает 500.

4b9b3361

Ответ 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
}