adminer 编译工作异常修复.

 成都seo   2018-01-09 14:00   549 人阅读  0 条评论
摘要:

  adminer 目前正式版已经发布到4.1.0版本, 4.1.1测试版正在测试中, 此工具对国人来说仍然陌生, 主要原因在于, 它跟phpmyadmin一样, 没让用户从根本上方便起来, 你一样要记密码, 一样要记住访问url, 并且还有安全问题, 登录信息记录等, 但从技术层面上来讲, 这工具是非常优秀的.  我准备对其做二次开发, 实现以下几点:1: 所有php程序均可内置引用adminer, api调用.2: 模式缩小至sqlite, mysql两种, 专一维护.3

  adminer 目前正式版已经发布到4.1.0版本, 4.1.1测试版正在测试中, 此工具对国人来说仍然陌生, 主要原因在于, 它跟phpmyadmin一样, 没让用户从根本上方便起来, 你一样要记密码, 一样要记住访问url, 并且还有安全问题, 登录信息记录等, 但从技术层面上来讲, 这工具是非常优秀的.


网站建设.jpg


  我准备对其做二次开发, 实现以下几点:


1: 所有php程序均可内置引用adminer, api调用.

2: 模式缩小至SQLite, mysql两种, 专一维护.

3: 界面优化,

4: php兼容性修复, 特别是php 5.5, php5.6


  目前我已经测试将adminer引入ecshop, discuz, phpcms上, 都是非常成功的, 只要管理员登录后台, 便可以直接操作数据库了.


  下载原版本的adminer4.1.0 原始包, 要实现可以打包一个单文件出来. 步骤如下: (不是我无聊去找bug, 是官方做得真的太马虎了. )


打开: compile.php, 先将首行:

#!/usr/bin/env php


删除. 接着搜索:

fprintf(STDERR, "Missing $val in $filename\n");


  注释掉这一行 (只能说原开发组也马虎.).

  接着打开: externals\JsShrink\jsShrink.php


function jsShrink($input) {
    return preg_replace_callback('(
        (?:
            (^|[-+\([{}=,:;!%^&*|?~]|/(?![/*])|return|throw) # context before regexp
            (?:\s|//[^\n]*+\n|/\*(?:[^*]|\*(?!/))*+\*/)* # optional space
            (/(?![/*])(?:
                \\\\[^\n]
                |[^[\n/\\\\]++
                |\[(?:\\\\[^\n]|[^]])++
            )+/) # regexp
            |(^
                |\'(?:\\\\.|[^\n\'\\\\])*\'
                |"(?:\\\\.|[^\n"\\\\])*"
                |([0-9A-Za-z_$]+)
                |([-+]+)
                |.
            )
        )(?:\s|//[^\n]*+\n|/\*(?:[^*]|\*(?!/))*+\*/)* # optional space
    )sx', 'jsShrinkCallback', "$input\n");
}

   没什么大问题, 但不难发现, 这正则的界定符有问题, 它用的是( .... )sx, 不知道官方是在哪个php版本上测试的, 我在php 5.6版本上, 直接崩溃, 换成 / ... /sx即可. 如下:


function jsShrink($input) {
    return preg_replace_callback('/
        (?:
            (^|[-+\([{}=,:;!%^&*|?~]|/(?![/*])|return|throw) # context before regexp
            (?:\s|//[^\n]*+\n|/\*(?:[^*]|\*(?!/))*+\*/)* # optional space
            (/(?![/*])(?:
                \\\\[^\n]
                |[^[\n/\\\\]++
                |\[(?:\\\\[^\n]|[^]])++
            )+/) # regexp
            |(^
                |\'(?:\\\\.|[^\n\'\\\\])*\'
                |"(?:\\\\.|[^\n"\\\\])*"
                |([0-9A-Za-z_$]+)
                |([-+]+)
                |.
            )
        )(?:\s|//[^\n]*+\n|/\*(?:[^*]|\*(?!/))*+\*/)* # optional space
    /sx', 'jsShrinkCallback', "$input\n");
}


好了, 现在访问 compile.php

成功就会提示: adminer.php created (340548 B).

adminer.php就是你的单文件神器.

这仅仅是编译通过, 要真正做成优秀的产品, 还需要无限的工作量.

我们正在努力.


本文地址:http://www.iisya.com/Stationmaster/412.html
版权声明:本文为原创文章,版权归 略懂SEO博客 所有,欢迎分享本文,转载请保留出处!

发表评论


表情

还没有留言,还不快点抢沙发?