前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >框架外的PHP读取.env文件(php5.6、7.3可用版)

框架外的PHP读取.env文件(php5.6、7.3可用版)

作者头像
德宏大魔王
发布2023-08-08 14:37:09
2640
发布2023-08-08 14:37:09
举报
文章被收录于专栏:cloud stdio

背景:由于项目需要,在框架外(public文件夹下)新建了一个原生的php文件,由于不知道怎么解决

“框架外的php文件,怎么使用DB操作”

于是上网搜索了一早上也没能又方法

于是我使用了,原生连接方法

代码语言:javascript
复制
//连接数据库
$conn=mysqli_connect('localhost','demo','3KHC999zLX666','demo') or die("連接失敗");
// $conn = new PDO('mysql:host=localhost;dbname=xcx_club', 'xcx_m_club', 'yyyyyy');
mysqli_query($conn, "set names utf8");
在这里插入图片描述
在这里插入图片描述

后来由于客户说,最好就是指定一个文件,用env的就行,我上网找了很多,最终解决办法如下: (我的环境 nginx php7,3)


.env文件

代码语言:javascript
复制
APP_DEBUG = true

[APP]
DEFAULT_TIMEZONE = Asia/Taipei

[DATABASE]
TYPE = mysql
HOSTNAME = 127.0.0.1
DATABASE = booking885_com
USERNAME = booking885_com
PASSWORD = 3KHC26dzLXd222
HOSTPORT = 3306
CHARSET = utf8mb4
DEBUG = true
authcode = j1g8KSrkbPLts9rNiM

[LANG]
default_lang = zh-cn

index.php文件

代码语言:javascript
复制
<?php
class Env
{
    const ENV_PREFIX = 'PHP_';
        
    /**
     * 加载配置文件
     * @access public
     * @param string $filePath 配置文件路径  - php7+以上加string
     * @return void - php7+才支持
     */
    public static function loadFile($filePath)//:void
    {
        if (!file_exists($filePath)) throw new \Exception('配置文件' . $filePath . '不存在');
        //返回二位数组
        $env = parse_ini_file($filePath, true);
        foreach ($env as $key => $val) {
            $prefix = static::ENV_PREFIX . strtoupper($key);
            if (is_array($val)) {
                foreach ($val as $k => $v) {
                    $item = $prefix . '_' . strtoupper($k);
                    putenv("$item=$v");
                }
            } else {
                putenv("$prefix=$val");
            }
        }
    }

    /**
     * 获取环境变量值
     * @access public
     * @param string $name 环境变量名(支持二级 . 号分割)
     * @param string $default 默认值
     * @return mixed
     */
    public static function get($name, $default = null)
    {
        $result = getenv(static::ENV_PREFIX . strtoupper(str_replace('.', '_', $name)));

        if (false !== $result) {
            if ('false' === $result) {
                $result = false;
            } elseif ('true' === $result) {
                $result = true;
            }
            return $result;
        }
        return $default;
    }
}
Env::loadFile("../../.env"); /*调用配置文件*/

$app_api_url = Env::get('database.hostname'); /*调用变量方法*/
var_dump($app_api_url);
echo($app_api_url);

这里如果出现这样的问题

在这里插入图片描述
在这里插入图片描述

只需要在宝塔上的php相应的版本上把禁用函数去除即可

在这里插入图片描述
在这里插入图片描述

在访问即可

在这里插入图片描述
在这里插入图片描述

其他的参数自己根据代码获取,代码简单,自己读吧

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-08-10,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档