出于安全性考虑,需要在某些页面中屏蔽或者改写phpinfo().但是万恶的php不支持方法覆盖,覆盖内置方法提示错误,无奈下请教各位!
只是局部需要屏蔽,默写地方还是需要使用phpinfo调试的,而且在配置中修改也不太现实,毕竟部分虚拟主机不支持直接修改php.ini,请教是否可以直接在php文件中屏蔽或者替换掉phpinfo()方法的方法???

解决方案 »

  1.   

    可以用ini_set()进行设置:<?php
    ini_set('output_handler', 'mb_output_handler');
    echo "\noutput_handler => " . ini_get('output_handler') . "\n";
    ?>
      

  2.   

    google 搜索php 探针 就可以下载了
      

  3.   

    做好的就是在php。ini中禁用。
    其实如果你程序中没有用到phpinfo不就和没有一样。
    至于如果是被黑了放上去的。那也没办法,是程序的问题。
    其实你百度一下phpinfo,看看各个网站的phpinfo,还是蛮舒服的
      

  4.   


    Fatal error: Cannot redeclare phpinfo()重写出错。。
    <?php
    ini_set('output_handler', 'mb_output_handler');
    echo "\noutput_handler => " . ini_get('output_handler') . "\n";
    function phpinfo(){
    echo 'power by Kee Simply Efficient Sulid 0.1';
    }

    phpinfo();
      

  5.   

    我的可以执行成功啊:<?php
    ini_set("date.timezone","America/New_York");
    echo "date.timezone-->>".ini_get("date.timezone")."<br/>";
    //date.timezone-->>America/New_York
    ?>你的php.ini有普通用户执行权限吗?
      

  6.   

    重写 php 内置函数需要有 PECL apd 扩展支持看到 PECL apd 官网上有好几年没更新了,估计支持 php5.3 有问题
      

  7.   

    不能这么做。disable_functions设置不能通过ini_set设置,只能直接设置在php.ini文件里,然后php当然是不支持你复写默认函数的
      

  8.   

    目前是在我的机子上调试,有完全控制权限。自己配置的环境,win7+AMP可能是配置上的问题吧,我再看看…
      

  9.   

    不能重写,还有什么方法可以禁止php的内置函数吗?只是局部屏蔽,其他地方还需要用到,而且,如果将来上传到虚拟主机也不支持修改php.ini,谢谢
      

  10.   

    咳咳,想问一句,
    为什么"需要在某些页面中屏蔽或者改写phpinfo()"? 
    有什么安全问题?
      

  11.   

    也许找到一个不是方法的方法。、。。
    $phpinfo = function (){
    echo 'hello world!';
    }

    phpinfo();
    $phpinfo();
    调试显示Parse error: syntax error, unexpected 'phpinfo' (T_STRING)
    呵呵,刚刚升级到了php5.4.0,不知道是我本机配置的原因还是什么。至少是一个暂时的解决方法吧麻烦各位给个解答,如果是本机配置的原因,继续寻求答案。00000
    另外回答一下楼上(helloyou0)大胸的提问:
    首先,phpinfo只是一个举例,毕竟它简单,可以直接调试,需要屏蔽的实在是太多了,如:exec。
    然后,我做这个是因为要被模版引用,被前端引用(写在模板引擎的安全规则里面的)不希望美工因为误操作而出现一些漏洞
    最后,咱实在是菜鸟,对自己的程序实在没啥信心。哈哈哈
    谢谢各位大兄的细致解答,可惜分实在是太少了ooooo