检查PHP代码中是否安装了FireHP

检查PHP代码中是否安装了FireHP,php,pear,libraries,firephp,Php,Pear,Libraries,Firephp,有没有办法确定服务器上是否安装了FireHP(通过PEAR)?我希望能够登录FireHP,但也不希望在没有该工具的情况下使每个人的代码崩溃 例如,我认为它应该如何工作: $message = "hello"; function log($message) { if (library_exists('FirePHPCore/fb.php')) { require_once('FirePHPCore/fb.php'); ob_start();

有没有办法确定服务器上是否安装了FireHP(通过PEAR)?我希望能够登录FireHP,但也不希望在没有该工具的情况下使每个人的代码崩溃

例如,我认为它应该如何工作:

$message = "hello";
function log($message) {
    if (library_exists('FirePHPCore/fb.php')) {
        require_once('FirePHPCore/fb.php');
        ob_start();
        \FB::log($message);
    } else {
        SomeBoringLogger::log($message);
    }
}
我还没有找到类似我的库\u exists方法的任何东西。PHP中有类似的东西吗

@include_once('FirePHPCore/fb.php'); // Ignore any errors here, as we check for existance
if (class_exists('FirePHP')) { // Do something after this

,因此,如果该类可用,则应定义该类


对于PHP5.3.2或更高版本,请使用zerkms的建议:

(!stream_resolve_include_path('FirePHPCore/fb.php')===FALSE)

,因此,如果该类可用,则应定义该类


对于PHP5.3.2或更高版本,请使用zerkms的建议:

(!stream_resolve_include_path('FirePHPCore/fb.php')===FALSE)

文件\u exists()
可用于您的案例

文件\u exists()
可用于您的案例

使用
包含一次
,这样就不会终止请求。正如@Brad所建议的,使用
class\u存在

$message = "hello";

safe_include_once('FirePHPCore/fb.php');
if (class_exists('FB')) {
   function log($message) { 
      //using FirePHP
   }
} else {
   function log($message) {
      SomeBoringLogger::log($message);
   }
}

function safe_include_once($path) {
  if ($path = stream_resolve_include_path($path)) {
    include_once($path);
  }
}
[编辑]使用
safe\u include\u path
中的
stream\u resolve\u include\u path


[Edit2]更快的运行时日志记录。

使用
include_once
,这样就不会终止请求。正如@Brad所建议的,使用
class\u存在

$message = "hello";

safe_include_once('FirePHPCore/fb.php');
if (class_exists('FB')) {
   function log($message) { 
      //using FirePHP
   }
} else {
   function log($message) {
      SomeBoringLogger::log($message);
   }
}

function safe_include_once($path) {
  if ($path = stream_resolve_include_path($path)) {
    include_once($path);
  }
}
[编辑]使用
safe\u include\u path
中的
stream\u resolve\u include\u path


[Edit2]更快的运行时日志记录。

任何php库都不应安装在系统共享目录中。您只需将目录与项目一起复制,并将其从您具有写访问权限的任何目录中包含即可。
is_文件('Firehpcore/fb.php')
?@Rocket:
is_文件
不考虑包含路径搜索包含路径。这可能会有帮助:而且——这也不是一个好主意。如果您不检查FireHP版本,就有可能开始使用过时且易受攻击的FireHP版本。因此,如果您真的需要它,我建议您只在您的分发版中安装一个副本。任何php库都不应该安装在系统共享目录中。您只需将目录与项目一起复制,并将其从您具有写访问权限的任何目录中包含即可。
is_文件('Firehpcore/fb.php')
?@Rocket:
is_文件
不考虑包含路径搜索包含路径。这可能会有帮助:而且——这也不是一个好主意。如果您不检查FireHP版本,就有可能开始使用过时且易受攻击的FireHP版本。因此,如果你真的需要它,我建议你在发行版中添加一个“include_once”。如果没有找到这样的文件,会发生什么?@zerkms,前面有
@
,PHP警告将被忽略。不幸的是,因为它不是一个例外,所以不能用
try
/
catch
捕获它。因为这是
include
而不是
require
,所以脚本不会失败。@Brad:是的,你在我的评论之后添加了
@
。PS:有些解决方案没有可怕的虫族,很高兴知道!这是一个更好的解决方案。在这之前添加一个“include_once”。如果找不到这样的文件,会发生什么?@zerkms,前面有
@
,PHP警告将被忽略。不幸的是,因为它不是一个例外,所以不能用
try
/
catch
捕获它。因为这是
include
而不是
require
,所以脚本不会失败。@Brad:是的,你在我的评论之后添加了
@
。PS:有些解决方案没有可怕的虫族,很高兴知道!这是一个更好的解决方案。如果找不到文件,将出现警告;如果找不到文件,将出现警告