2015-02-24 71 views

回答

2

是否可以使用php.ini中的disable_functions操作来禁用生产服务器上的var_dump?我不确定这个设置的结果是什么(即它是否因错误或无声而失败),文档不太清楚。

http://php.net/manual/en/ini.core.php - 见 “disable_functions选项”

也有override_function:

<?php 
override_function('var_dump', '$a', 'return 0;'); 
?> 

http://php.net/manual/en/function.override-function.php

+0

正是我所期待的r,很难相信它存在 – user1122069 2015-02-25 02:14:03

-1

如果您有大型数据库,为什么不使用serialize()json_encode()?这将非常有用。

但需注意,serialize()会给你一个1行输出有点像这样:

's:0:"";s:5:"value";' 

所以,你需要学习的serialize()解剖使用它:PHP Serialize

+0

而且,'连载()'和'json_encode()'的方式更快地在大型使用时数据库:[PHP中的标准缓存代码转换器](http://nitschinger.at/Benchmarking-Cache-Transcoders-in-PHP) – Andreas 2015-02-24 20:07:19

+0

我想你的意思是发布这个不同的问题 – 2015-02-24 20:20:52

0

其实有办法要做到这一点,如果你有PECL可用并且安装了runkit。如果你在php.ini中设置runkit.internal_override为“1”,你可以让runkit能够覆盖PHP的内部函数。

为了去除的var_dump功能,你可以使用:

runkit_function_remove('var_dump'); 

你的情况,而不是得到一个错误,你应该改用这样的事:

runkit_function_redefine('var_dump', '',''); 

看看在runkit extensions documentation here

您可能还想看看“Advanced PHP debugger”,另一个扩展,似乎提供了override_function()

0

您可以使用猴子补丁。

只定义在文件的第一行命名空间和定义函数的var_dump

 <?php 
    namespace monkey; 
    function var_dump($obj) {} 

当然,它意味着你不使用一个命名空间在当前文件

你可以使用函数var_dump()以根名称空间()作为​​前缀:\var_dump()

当然,只要不在名称空间中覆盖它们,其他所有本机函数仍将继续正常工作。