【原创】PHP脚本中如何获得Linux系统环境变量?

blogdaren 2020-01-06 抢沙发 167人次

问题背景:

如题所示,PHP脚本中如何获得Linux系统环境变量?

解决方案:

PHP有一套系列函数可以用来执行外部命令的,如此我们就可以轻松上述功能,这套系列函数大致有:exec()、passthru()、system()等等,具体请参阅PHP手册。

代码封装:

class Tool
{
    /**
     * @brief    获取Linux系统环境变量
     *
     * - Tool::getLinuxEnvironmentVar() : 留空,返回所有的环境变量
     * - Tool::getLinuxEnvironmentVar('path') : 返回PATH环境变量
     * - Tool::getLinuxEnvironmentVar('mail') : 返回MAIL环境变量
     *
     * @param    string  $key   对应linux环境变量的key,支持小写.
     *
     * @return   array|string
     */
    static public function getLinuxEnvironmentVar($key = '')
    {
        //exclude windows system
        if('\\' === DIRECTORY_SEPARATOR) return array();

        exec("env", $output, $status);

	if(!is_string($key) || $status <> 0 || empty($output)) return array();

        $vars = array();
        foreach($output as $k => $v)
        {
            list($_k, $_v) = explode('=', $v);
            $vars[$_k] = $_v;
        }

        if(empty($key)) return $vars;

        $new_key = strtoupper($key);
        if(array_key_exists($new_key, $vars)) return $vars[$new_key];

        return array();
    }
}

注意事项:

exec()、passthru()、system()等函数PHP出于安全考虑默认是禁止的,所以必须修改 php.ini 配置文件放行这批函数,用哪个函数就放行那个函数,如何放行,移步作者在workerman的类似回复贴: https://wenda.workerman.net/question/4776

版权声明:除非注明,本文由( blogdaren )原创,转载请保留文章出处。

本文链接:【原创】PHP脚本中如何获得Linux系统环境变量?

发表评论:

您的昵称:
电子邮件:
个人主页: