检查PHP代码中是否安装了FireHP
有没有办法确定服务器上是否安装了FireHP(通过PEAR)?我希望能够登录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();
$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:有些解决方案没有可怕的虫族,很高兴知道!这是一个更好的解决方案。如果找不到文件,将出现警告;如果找不到文件,将出现警告