尝试Catch无法在PHP中使用require_once?

时间:2011-03-20 15:42:55

标签: php

我做不到这样的事情?

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

没有回显错误,服务器返回500。

3 个答案:

答案 0 :(得分:51)

您可以使用include_oncefile_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();
}

答案 1 :(得分:10)

你可以阅读here :(我的)

  

require()与include()相同   除非失败,它也会   产生致命的E_COMPILE_ERROR级别   错误即可。换句话说,它会停止   脚本

这是关于require的,但这相当于require_once()。这不是一个可捕获的错误。

顺便说一下,你需要输入绝对路径,我不认为这是正确的:

 require_once( '/includes/functions.php' ); 

你可能想要这样的东西

require_once( './includes/functions.php' ); 

或者,如果您从子目录或包含在不同目录中的文件中调用它,您可能需要类似

的内容
require_once( '/var/www/yourPath/includes/functions.php' ); 

答案 2 :(得分:5)

这应该有效,但这有点像黑客。

if(!@include_once("path/to/script.php")) {
    //Logic here
}