phpLua拓展

  1. 安装readline
    yum install readline-devel
    检查是否安装成功
    ls -l /usr/include/ | grep readline

  2. 安装lua
    curl -R -O http://www.lua.org/ftp/lua-5.2.3.tar.gz
    tar zxf lua-5.2.3.tar.gz
    cd lua-5.2.3

    修改安装目录,方便管理
    vi Makefile
    修改目录 INSTALL_TOP= /usr/local/lua
    这一步很关键(就是因为这步,本人重装了无数次)
    cd src && vi Makefile
    在CFLAG一行 添加选项 -fPIC
    install
    make linux test
    安装成功(有fplc过程很关键)
    install

  3. 安装php拓展
    cd /tmp
    wget http://pecl.php.net/get/lua-1.0.0.tgz
    tar -zxvf lua-1.0.0.tgz
    cd lua-1.0.0.tgz
    /usr/local/php/bin/phpize
    ./configure –prefix=/usr/local/phplua –with-php-config=/usr/local/php/bin/php-config –with-lua=/usr/local/lua
    make && make install
    安装成功
    install

  4. 配置php拓展
    vi /usr/local/php/etc/php.ini
    添加以下内容
    ;phplua
    extension_dir = /usr/local/php/lib/php/extensions/no-debug-non-zts-20131226/
    extension = “lua.so”
    重启fastcgi
    ~/fastcgi_restart
    查看以下phpinfo,看是否有安装成功
    install

  5. 安装过程和问题参考:
    http://blog.sina.com.cn/s/blog_87b9bbc70100z04v.html
    http://www.cnblogs.com/Jqxing/p/3480481.html

  6. 使用
    官方manual:http://php.net/manual/zh/class.lua.php
    6.1 把Lua脚本include进来,可以直接执行Lua函数
    test.Lua

    1
    2
    3
    4
    5
    globalname = "From Lua";
    function LuaFunc(msg)
    print(globalname , ":", msg);
    end

    test.php

    1
    2
    3
    4
    5
    6
    $lua = new Lua();
    $lua->include("/Lua/test.lua");
    //使用方法一:
    $lua->call("LuaFunc", ["Hello Lua"]);
    //使用方法二:
    $lua->LuaFunc(["Hello Lua"]);

    6.2 解析策划配置表

    1
    2
    3
    4
    5
    6
    7
    8
    9
    //实例化一个Lua
    $lua = new Lua();
    //注册国际化函数
    $lua->registerCallback("NSLocalizedString",function($var){
    return $var;
    });
    //解析Lua脚本文件
    $lua->include("data_item.lua");
    print_r($lua->data_item);

    6.3 解析Lua数据表

    1
    2
    3
    4
    5
    6
    7
    $lua = new Lua();
    $php_var = '{name="andy",say="good job!"}';
    $lua->eval(<<<CODE
    lua_var = $php_var;
    CODE);
    print_r($lua->lua_var);
罐头很懒 (⊙v⊙)<br><br>工作日日常 :<br>do {<br>&nbsp;&nbsp;打代码<br>} while ( 发呆 || 吃饭 )<br><br>周末日常 :<br>( 鱼罐头 || 午餐肉 || 炸鸡块 ) +<br>( 罐可乐 || 瓶啤酒 ) +<br>( 盒仔饭 || 艇仔粥 || 即食面 ) +<br>( 轻音乐 || 肥皂剧 || 热网综 ) +<br>( 水果糖 || 甜布丁 )