我很好奇,想知道我是否有办法制作自己的phpinfo()函数?
function phpinfo() {
// show custom list of php.ini settings here
}
我试过这个,但我得到一个解析错误,因为我将我的函数命名为与PHP内置函数相同。
我知道你可以改变phpinfo()输出数据的方式(颜色等),但我还没有找到可以过滤页面内容的方法。
我让人们在注册时创建子域名,并且我让他们托管他们自己的文件,但我不想限制phpinfo输出,以便他们只能看到我让他们看到的内容。
我可以完全控制我的PHP安装,因为我在专用服务器上运行我的网站,如果有帮助的话。
答案 0 :(得分:3)
您可以使用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;
}
答案 1 :(得分:0)
您可以使用php.ini指令disable_functions
来禁用标准的phpinfo函数,该函数允许您定义自己的函数。请参阅http://php.net/manual/en/ini.core.php。
我认为这不是一条很好的路线。您需要能够信任允许您将代码上传到服务器的人。我不认为phpinfo()输出中有太多东西不能通过其他方式得到。