让PHP”WYSIWYG”起来~~

最近因为配置问题搞的我有点烦了。。,开发时我本地搭一个开发环境,测试时qa自己会搭一个测试环境,部署之前pe也会自己搭一个测试环境。因为环境之间的差异,多次造成程序不能按照预期运行。所以也学习开源软件,在所有项目的loader里做一下环境判断。我觉得真的有必要学习下css搞个reset.php啥的(TODO)。。。

最多的问题出在PHP不能“所见即所得”,传參被“智能”的过滤或覆盖

//默认应该是没有配置filter,但是哪位大神配置了特殊字符过滤,导致json串被转义
if (ini_get('filter.default') !== 'unsafe_raw') die('please disable filter.default in php.ini!');
//不解释,这个选项无论如何都应该干掉
if (get_magic_quotes_gpc()) die('please disable magic_quotes_gpc in php.ini!');

//php 5.3开始默认配置REQUEST里不再包含 COOKIE,但是测试环境配了个php 5.2
//导致POST参数被COOKIE同名参数覆盖。。。

if (ini_get('request_order') !== 'GP') {
    foreach($_COOKIE as $k=>$v) {
        if (isset($_GET[$k])) {
            $_REQUEST[$k] = $_GET[$k];
        }

        if (isset($_POST[$k])) {
            $_REQUEST[$k] = $_POST[$k];
        }

        if (!isset($_POST[$k]) && !isset($_GET[$k])) {
            unset($_REQUEST[$k]);
        }
    }
}

讨论

  1. 王康

    是啊,最近我也遇到了,Apache、Tomcat、Php、MySQL等等,这些开源东东每个都有很多的版本,一起使用时排列组合的方式就太多了,太容易出兼容性问题了。在自己的环境中跑着没问题了,到别人环境里面问题会一大堆。

加入讨论

电子邮件地址不会被公开。 必填项已用*标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据