Apache mod_lua已启用但PHP类LUA未找到,求技术解决方案
解决PHP中「class LUA not found」的问题
嘿,你这明显是踩了个常见的概念坑——把Apache的mod_lua和PHP的Lua扩展搞混了!这俩虽然都沾Lua的边,但完全是两个不同的东西:
mod_lua是给Apache服务器本身用的,用来让Apache用Lua写请求处理逻辑、路由规则这类服务器层面的功能,和PHP没有直接关联;- 你要在PHP代码里用
new LUA(),必须装PHP专属的Lua扩展,这个扩展是用来打通PHP和Lua引擎的桥梁。
下面给你一步步解决的具体操作:
1. 先安装编译PHP扩展的依赖
Debian 9上编译PHP扩展需要基础工具和Lua开发库,先执行这条命令:
sudo apt-get update && sudo apt-get install php-dev liblua5.3-dev -y
2. 安装PHP的Lua扩展
你之前编译的是Apache的mod_lua,现在要重新编译针对PHP的Lua扩展:
方式一:用PECL快速安装(推荐)
如果服务器能正常访问PECL源,直接跑:
sudo pecl install lua-2.0.5
安装过程中如果询问是否启用Lua 5.3支持,选yes即可。
方式二:手动编译(PECL无法访问时用)
要是PECL用不了,就手动来:
# 下载扩展源码包 wget https://pecl.php.net/get/lua-2.0.5.tgz # 解压源码 tar xzf lua-2.0.5.tgz && cd lua-2.0.5 # 初始化PHP扩展编译环境 phpize # 配置编译参数(指定Lua 5.3的头文件路径) ./configure --with-lua=/usr/include/lua5.3 # 编译并安装 make && sudo make install
3. 启用PHP扩展
编译完成后,得让PHP加载这个扩展:
- 进入PHP的Apache配置目录(Debian 9 PHP7.0的路径是
/etc/php/7.0/apache2/conf.d/) - 创建新配置文件
20-lua.ini,内容就一行:extension=lua.so - 重启Apache让配置生效:
sudo systemctl restart apache2
4. 验证是否成功
- 刷新你的
phpinfo()页面,现在应该能看到单独的「Lua」模块条目; - 写个简单的测试脚本试试:
运行后如果能输出<?php try { $lua = new Lua(); $result = $lua->eval('return "Hello from Lua in PHP!"'); echo $result; } catch (Exception $e) { echo "Error: " . $e->getMessage(); } ?>Hello from Lua in PHP!,就说明问题解决了。
再补一句为啥之前的mod_lua没用
mod_lua是Apache自己的工具,比如你可以用它写个Apache的handler直接返回页面内容,但它不会给PHP提供任何Lua相关的类或函数。你要在PHP里调用Lua,必须装PHP的Lua扩展——这俩就像两个独立的工具,一个服务于服务器,一个服务于PHP。
内容的提问来源于stack exchange,提问作者Forien
相关产品推荐
相关产品推荐

