如何正确在 Termux 中配置 Apache 使其支持 PHP 模块安装?
- 内容介绍
- 文章标签
- 相关推荐
本文共计544个文字,预计阅读时间需要3分钟。
在Termux中运行`链接文本`。请注意不要使用图片解释,避免使用数字和确保内容不超过100个字。
Termux 中的 Apache 与 PHP 集成并非严格按传统 Linux 发行版方式打包。尤其自 PHP 8.0 起,官方已弃用 php7_module 命名约定,统一使用更通用的 php_module,对应动态库文件也从 libphp7.so 更名为 libphp.so —— 即使你安装的是 PHP 8.1(如题中所示 PHP 8.1.3),Termux 包管理器(pkg)提供的 Apache PHP 模块仍命名为 libphp.so,且位于标准路径 /data/data/com.termux/files/usr/libexec/apache2/。
因此,应将 httpd.conf 中原错误配置:
LoadModule php7_module /data/data/com.termux/files/usr/libexec/apache2/libphp7.so
替换为:
LoadModule php_module /data/data/com.termux/files/usr/libexec/apache2/libphp.so
同时保留后续 PHP 处理配置(无需修改):
立即学习“PHP免费学习笔记(深入)”;
<FilesMatch \.php$> SetHandler application/x-httpd-php </FilesMatch>
✅ 验证步骤:
- 保存 httpd.conf;
- 执行 apachectl configtest 确认语法无误(输出 Syntax OK);
- 启动服务:apachectl start;
- 访问 http://localhost:8080(Termux Apache 默认端口为 8080),并创建 info.php 测试:
<?php phpinfo(); ?>
⚠️ 注意事项:
- 不要手动重命名 .so 文件(如将 libphp.so 改为 libphp7.so),这可能导致符号解析失败;
- Termux 的 Apache 模块路径固定,切勿随意修改 libexec 目录结构;
- 若仍报错,请先确认模块文件真实存在:
ls -l $PREFIX/libexec/apache2/libphp.so
若不存在,可重装 PHP Apache 模块:
pkg reinstall php-apache
总结:该问题本质是模块标识符(module name)与实际共享库(shared object)命名不一致所致。Termux 遵循上游 Apache + PHP 的现代命名规范,应始终使用 php_module + libphp.so 组合,而非沿用旧版 PHP 7 的命名惯性。
本文共计544个文字,预计阅读时间需要3分钟。
在Termux中运行`链接文本`。请注意不要使用图片解释,避免使用数字和确保内容不超过100个字。
Termux 中的 Apache 与 PHP 集成并非严格按传统 Linux 发行版方式打包。尤其自 PHP 8.0 起,官方已弃用 php7_module 命名约定,统一使用更通用的 php_module,对应动态库文件也从 libphp7.so 更名为 libphp.so —— 即使你安装的是 PHP 8.1(如题中所示 PHP 8.1.3),Termux 包管理器(pkg)提供的 Apache PHP 模块仍命名为 libphp.so,且位于标准路径 /data/data/com.termux/files/usr/libexec/apache2/。
因此,应将 httpd.conf 中原错误配置:
LoadModule php7_module /data/data/com.termux/files/usr/libexec/apache2/libphp7.so
替换为:
LoadModule php_module /data/data/com.termux/files/usr/libexec/apache2/libphp.so
同时保留后续 PHP 处理配置(无需修改):
立即学习“PHP免费学习笔记(深入)”;
<FilesMatch \.php$> SetHandler application/x-httpd-php </FilesMatch>
✅ 验证步骤:
- 保存 httpd.conf;
- 执行 apachectl configtest 确认语法无误(输出 Syntax OK);
- 启动服务:apachectl start;
- 访问 http://localhost:8080(Termux Apache 默认端口为 8080),并创建 info.php 测试:
<?php phpinfo(); ?>
⚠️ 注意事项:
- 不要手动重命名 .so 文件(如将 libphp.so 改为 libphp7.so),这可能导致符号解析失败;
- Termux 的 Apache 模块路径固定,切勿随意修改 libexec 目录结构;
- 若仍报错,请先确认模块文件真实存在:
ls -l $PREFIX/libexec/apache2/libphp.so
若不存在,可重装 PHP Apache 模块:
pkg reinstall php-apache
总结:该问题本质是模块标识符(module name)与实际共享库(shared object)命名不一致所致。Termux 遵循上游 Apache + PHP 的现代命名规范,应始终使用 php_module + libphp.so 组合,而非沿用旧版 PHP 7 的命名惯性。

