如何将PHP前端与makefile/bash脚本接口?
我正在编写一个通过CLI和web UI管理多个SSH隧道的项目 Bash脚本 该服务使用如何将PHP前端与makefile/bash脚本接口?,php,bash,codeigniter,interface,makefile,Php,Bash,Codeigniter,Interface,Makefile,我正在编写一个通过CLI和web UI管理多个SSH隧道的项目 Bash脚本 该服务使用Bash编写,可以: 启动给定隧道或所有隧道 停止给定隧道或所有隧道 给定隧道或所有隧道的状态 列出所有可用的隧道 生成文件脚本 makefile可以执行一些“管理”任务: 添加主机为隧道添加配置 删除主机为隧道添加配置 等等 网络用户界面 我想创建一个web界面——使用PHP/CodeIgniter——来控制服务 问题: 如何将CodeIgniter与makefile和bash命令连接起来 具体来
Bash
编写,可以:
给定隧道或所有隧道启动
给定隧道或所有隧道停止
- 给定隧道或所有隧道的状态
列出所有可用的隧道
makefile
可以执行一些“管理”任务:
为隧道添加配置添加主机
为隧道添加配置删除主机
- 等等
PHP
/CodeIgniter
——来控制服务
问题:
- 如何将CodeIgniter与makefile和bash命令连接起来
- 具体来说,如何使用退出状态为PHP脚本提供信息
- PHP的
exec
()命令可能会满足您的需要
您可以使用exec
运行脚本,并捕获脚本的输出和退出代码。例如:
$output = array();
$exitCode = null;
exec("/path/to/my/script arg1 arg2 2>&1", $output, $exitCode);
$output
将是一个字符串数组-脚本输出的行<代码>$exitCode将是脚本返回的退出代码
但是,请注意,使用exec
会引起一些问题:
exec
运行的命令将作为web服务器用户运行;对于Debian/Ubuntu上的Apache,这将是www-data
1) 这就是为什么我使用
makefile
和一个服务,它们抽象了我想要执行的操作。2) 我想我必须编辑sudoers
以允许Apache执行我的服务。起初,由于与权限相关的错误,我遇到了麻烦。只打印了第一行。我通过如下重定向命令解决了这个问题:exec('/etc/init.d/mast list 2>&1',$output,$exitCode)
。看见