第一种. 添加环境变量 exportLUA_PATH="/opt/lua_thrid/?.lua;;"exportLUA_CPATH="/opt/lua_thrid/?.so;;" 第二种. 代码添加 package.path="/opt/lua_thrid/?.lua;;"package.cpath="/opt/lua_thrid/?.so;;" 第三种. openresty的 nginx配置文件中添加 注意: 环境变量添加后,这里就不需要在添加了~~ #lua扩展加载lua_package_path"/usr/local/openresty/...
lua_package_path'/foo/bar/?.lua;/blah/?.lua;;'; # 设置 C 编写的 Lua 扩展模块的搜寻路径(也可以用 ';;'): lua_package_cpath'/bar/baz/?.so;/blah/blah/?.so;;'; 然后require的字符串就会替换对应的问号?,一个文件就会去/foo/bar/下面寻找。 example 在代码中require "controller.test",会...
require首先检查表package.loaded是否模块已经加载,如果已经加载,则返回对应的值。如果模块没有加载,require搜索模块名字对应的lua文件,搜索通过package.path来引导,如果找到文件,则使用loadfile加载,返回的结果是称为加载器的函数。如果没有找到模块名对应的lua文件,则搜索对应名字的c库文件,此时搜索是通过package.cpath变...
--1. 一定要注意区分,第一次启动coroutine的时候,resume的参数传给匿名函数(以后不在进行匿名函数的形参赋值); --2. 在唤醒yield的时候,参数是传递给yield()的。直接从yield()的位置往下执行 --3. 匿名函数执行完毕后,再次调用coroutine.resume不在起作用,因为协成状态已经停止 --coroutine.yield() 挂起coroutine...
lua_package_cpath"/usr/local/openresty/lualib/?.so;;";# 在这里配置,这样当前http块内需要用到cjson模块时,都不需要独自加载了 init_by_lua_block{--注意,这里面是lua语法,注释是两个杠 不是井号 cjson=require'cjson';--mysql=require("resty.mysql");--redis=require'resty.redis';}server{listen...
问用package.cpath代码获取Lua package.cpath& pathENhttp请求返回500状态码,整体原因是:服务器内部...
第二个通过package.path检查是否存在对应的lua文件,如果存在就调用loadfile加载lua文件,加载的结果就是一个loader。所以,我们可以将lua文件看成一个函数,文件中的返回语句就是这个函数的返回值,从这里也了解到,返回的不一定是表,也可以是函数,或是其他任意类型的对象。 第三个查找package.cpath看是否存在对应名字的...
lua_package_path lua_package_cpath init_by_lua init_by_lua_block init_by_lua_file init_worker_by_lua init_worker_by_lua_block init_worker_by_lua_file exit_worker_by_lua_block exit_worker_by_lua_file set_by_lua set_by_lua_block ...
lua_package_cpath "/usr/local/openresty/lualib/?.so;;"; #c模块 为更好的配置lua配置,独立lua.conf文件,不与nginx.conf搅合一起, lua.con文件中配置如下: #lua.conf server { listen 80; server_name _; } 在nginx.conf文件中http模块将其引入 ...
package.cpath:作用和packag.path一样,但它是用于加载第三方c库的。它的初始值可以通过环境变量 LUA_CPATH来设置 package.loadlib(libname, func):相当与手工打开c库libname, 并导出函数func返回,loadlib其实是ll_loadlib 2)查找加载器顺序: require(在lua中它是ll_require函数)的查找顺序如下: ...