一、安装Lua 5.3.4
下载
http://www.lua.org/ftp/lua-5.3.4.tar.gz
tar xvf lua-5.3.4.tar.gz
cd lua-5.3.4
重要:进入解压缩后的路径 cd .../lua-5.3.4/src 打开Makefile文件 在CFLAG一行 添加选项 -fPIC 像这样:
找到源文件的这行替换掉
CFLAGS= -O2 -Wall -DLUA_COMPAT_ALL $(SYSCFLAGS) -fPIC $(MYCFLAGS)
然后编译、安装
make linux
sudo make install
执行完成后安装lua成功,可以查看lua 版本是否为刚安装的版本
[email protected]:~/lua-5.3.4$ lua -v
Lua5.3.4 Copyright (C) 1994-2017 Lua.org, PUC-Rio
查看 /usr/local/include/ 路径下是否有 lua.h, 为该头文件创建一个软链
[email protected]:/usr/local/include$ ls
lauxlib.h libssh2.h libssh2_publickey.h libssh2_sftp.h luaconf.h lua.h lua.hpp lualib.h
[email protected]:/usr/local/include$ ln -s /usr/local/include/lua.h /usr/include/lua/lua.h
ln: 无法创建符号链接‘/usr/include/lua/lua.h‘local/include$ ln -s /usr/local/include/lua.h /usr/include/lua/lua.h
ln: 无法创建符号链接‘/usr/include/lua/lua.h‘local/include$ mkdir -P /usr/include/lua
mkdir:无效选项--P
Try ‘mkdir --help‘ formore information.
[email protected]:/usr/local/include$ mkdir -R /usr/include/lua
mkdir:无效选项--R
Try ‘mkdir --help‘ formore information.
[email protected]:/usr/local/include$ mkdir - /usr/include/lua
mkdir: 无法创建目录"-": 权限不够
mkdir: 无法创建目录"/usr/include/lua"local/include$ sudo mkdir - /usr/include/local/include$ ln -s /usr/local/include/lua.h /usr/include/lua/lua.h
ln: 无法创建符号链接‘/usr/include/lua/lua.h‘local/include$ sudo ln -s /usr/local/include/lua.h /usr/include/lua/local/include$
将 liblua.a 放到 /usr/lib 目录下,先查找liblua.a文件在哪个位置,一般是在/usr/local/lib/liblua.a
[email protected]:/usr/local/include$ whereis liblua.a
liblua:/usr/local/lib/local/include$ cp /usr/local/lib/liblua.a /usr/lib/liblua.a
cp: 无法创建普通文件‘/usr/lib/liblua.a‘local/include$ sudo cp /usr/local/lib/liblua.a /usr/lib/local/include$
如果不安装lua,在./configured的时候提示一下错误信息
configure: error: Please reinstall the lua distribution - lua.h should be in /include/
二、安装phplua 扩展
wget http://pecl.php.net/get/lua-2.0.3.tgz
tar xvf lua-2.0.3.tgz
cd lua-2.0.3phpize
./configure
编译、安装
[email protected]:~/lua-2.0.3$ make/bin/bash /home/tinywan/lua-2.0.3/libtool --mode=compile cc ...
2.0.3$ sudo make install/bin/bash /home/tinywan/lua-2.0.3/libtool --mode=install cp ./lua.la /home/tinywan/lua-2.0.3/modules
libtool: install: cp ./.libs/lua.so /home/tinywan/lua-2.0.3/modules/lua.so
libtool: install: cp ./.libs/lua.lai /home/tinywan/lua-2.0.3/modules/lua.la
libtool: finish: PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/snap/bin:/sbin" ldconfig -n /home/tinywan/lua-2.0.3/modules----------------------------------------------------------------------
Libraries have been installed in:/home/tinywan/lua-2.0.3/modules
If you ever happen to want to link against installed librariesin a given directory, LIBDIR, you must either use libtool, andspecify the full pathname of the library,or use the ‘-LLIBDIR‘flag during linkingand doat least one of the following:- add LIBDIR to the ‘LD_LIBRARY_PATH‘environment variable
during execution- add LIBDIR to the ‘LD_RUN_PATH‘environment variable
during linking- use the ‘-Wl,-rpath -Wl,LIBDIR‘linker flag- have your system administrator add LIBDIR to ‘/etc/ld.so.conf‘See any operating system documentation about shared librariesformore information, such as the ld(1) and ld.so(8) manual pages.----------------------------------------------------------------------
Installing shared extensions: /usr/lib/php/20151012/
查看lua.so 文件
[email protected]:/usr/lib/php/20151012$ ls
build ctype.so exif.so ftp.so iconv.so lua.so
修改PHP 配置文件
sudo vim /etc/php/7.0/cli/php.ini#添加一下内容
extension=/usr/lib/php/20151012/20151012$ php -m | grep lua
lua
安装完毕
三、测试
文件test_lua.php
<?php $lua = newLua();$lua->eval(<<
);$lua->call("dummy", array("Lua", "geiliable\n"));$lua->dummy("Lua", "geiliable"); //__call()
var_dump($lua->call(array("table", "concat"), array(array(1=>1, 2=>2, 3=>3), "-")));?>
执行结果:
[email protected]:~/PHP7$ php test_lua.php
Lua,geiliable
Lua,geiliablestring(11) "1.0-2.0-3.0"
原文:http://www.cnblogs.com/tinywan/p/6813646.html