首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >是否覆盖phpinfo()函数?

是否覆盖phpinfo()函数?
EN

Stack Overflow用户
提问于 2011-09-11 08:32:44
回答 2查看 930关注 0票数 3

我很好奇,想知道是否有一种方法可以让我自己制作phpinfo()函数?

代码语言:javascript
复制
function phpinfo() {
   // show custom list of php.ini settings here
}

我尝试过这样做,但得到了一个解析错误,因为我的函数的名称与PHP内置函数的名称相同。

我知道你可以改变phpinfo()输出数据(颜色等)的方式,但是我还没有找到过滤页面内容的方法。

我允许人们在注册时创建子域,并允许他们托管自己的文件,但我不想限制phpinfo输出,使他们只能看到我让他们看到的内容。

我有完全控制我的PHP安装,因为我在一个专用的服务器上运行我的网站,如果这有帮助的话。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-09-11 08:36:36

您可以使用runkit_function_rename重命名旧的phpinfo。重命名后,可以定义一个名为phpinfo的新函数。如果您需要调用旧函数,只需使用新名称调用它。或者,如果不需要调用旧函数,可以使用runkit_function_remove删除它。

这些解决方案的问题是,如果他们知道您将其重命名为的名称,他们可以调用该名称来获取原始输出。最好的解决方案可能是修改PHP源以过滤phpinfo输出。

编辑:这是一个如何使用runkit_function_rename的示例。我没有安装runkit,所以我不能测试它是否工作,但它可能:

代码语言:javascript
复制
runkit_function_rename('phpinfo', 'old_phpinfo');

function phpinfo() {
    ob_start();
    old_phpinfo();
    $data=ob_get_contents();
    ob_end_clean();
    $data=str_replace("php", "(the language you're using)", $data);
    echo $data;
}
票数 3
EN

Stack Overflow用户

发布于 2011-09-11 08:44:45

您可以使用php.ini指令disable_functions禁用标准的phpinfo函数,该函数允许您定义自己的函数。参见http://php.net/manual/en/ini.core.php

我不认为这是一个很好的下降路线。您需要能够信任您允许将代码上传到您的服务器的人。我不认为phpinfo()输出中有很多是通过其他方法无法获得的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7375564

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档