我很好奇,想知道是否有一种方法可以让我自己制作phpinfo()函数?
function phpinfo() {
// show custom list of php.ini settings here
}我尝试过这样做,但得到了一个解析错误,因为我的函数的名称与PHP内置函数的名称相同。
我知道你可以改变phpinfo()输出数据(颜色等)的方式,但是我还没有找到过滤页面内容的方法。
我允许人们在注册时创建子域,并允许他们托管自己的文件,但我不想限制phpinfo输出,使他们只能看到我让他们看到的内容。
我有完全控制我的PHP安装,因为我在一个专用的服务器上运行我的网站,如果这有帮助的话。
发布于 2011-09-11 08:36:36
您可以使用runkit_function_rename重命名旧的phpinfo。重命名后,可以定义一个名为phpinfo的新函数。如果您需要调用旧函数,只需使用新名称调用它。或者,如果不需要调用旧函数,可以使用runkit_function_remove删除它。
这些解决方案的问题是,如果他们知道您将其重命名为的名称,他们可以调用该名称来获取原始输出。最好的解决方案可能是修改PHP源以过滤phpinfo输出。
编辑:这是一个如何使用runkit_function_rename的示例。我没有安装runkit,所以我不能测试它是否工作,但它可能:
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;
}发布于 2011-09-11 08:44:45
您可以使用php.ini指令disable_functions禁用标准的phpinfo函数,该函数允许您定义自己的函数。参见http://php.net/manual/en/ini.core.php。
我不认为这是一个很好的下降路线。您需要能够信任您允许将代码上传到您的服务器的人。我不认为phpinfo()输出中有很多是通过其他方法无法获得的。
https://stackoverflow.com/questions/7375564
复制相似问题