使用yaml扩展和symfony/yaml组件读取配置文件

配置文件(demo.conf)内容示例
重要提醒①:yaml_parse()函数对文件内容的格式比较严格,譬如冒号后面必须至少有一个空格,否则无法解析且报Warning错误;
重要提醒②:注释符使用“#”号,且可以跟在配置值后面。
########## 数据库配置 ##########
database:
    master: # 主库配置
        host: 192.168.1.1  # 主机地址
        port: 3306         # 端口号
        user: master       # 账号
        pwd : master123456 # 密码
    slave: # 从库配置
        host: 192.168.2.2
        port: 3306
        user: slave
        pwd : slave123456

########## Redis配置 ##########
redis:
    host: 192.168.1.1 # 主机地址
    port: 6379        # 端口号

########## RSA配置 ##########
rsa:
    public_key : '/opt/rsa/rsa_public_key.pem'  # 公钥文件路径
    private_key: '/opt/rsa/rsa_private_key.pem' # 私钥文件路径





扩展下载地址:https://pecl.php.net/package/yaml
 
不同版本的扩展对PHP版本有最低要求,PHP 5.6能安装的最高版本号为1.3.2,而PHP 7.1则能安装最新的2.2.2版,下面以1.3.2版为例演示安装过程。
 
先安装好依赖软件包libyaml
[root@localhost ~]# yum install -y libyaml
 
把yaml-1.3.2.tgz上传到服务器,然后使用PHP的pecl安装即可
[root@localhost ~]# /program/php/bin/pecl install yaml-1.3.2.tgz
 
修改php.ini文件,加入yaml扩展
[root@localhost ~]# vim /program/php/php.ini
………………
extension=yaml.so
………………
[root@localhost ~]# service php-fpm restart # 重启PHP-FPM使配置生效,可使用phpinfo()检查yaml扩展是否加载
 
使用yaml扩展读取配置文件
<?php
$conf = yaml_parse_file(__DIR__ . '/demo.conf');
print_r($conf); // 获取所有配置
print_r($conf['database']['slave']); // 获取指定配置





除了使用yaml扩展还可以使用symfony/yaml组件来解析yaml格式文件,该组件并不依赖yaml扩展,即不安装yaml扩展也能使用,当然性能肯定会比yaml扩展差一点,可以使用composer来安装symfony/yaml,命令如下:
[root@localhost ~]# composer require symfony/yaml
 
使用symfony/yaml组件读取配置文件(依然是读取demo.conf文件,结果和使用yaml扩展读取配置文件是完全一样的)
<?php
require_once __DIR__ . '/Yaml/vendor/autoload.php';

use Symfony\Component\Yaml\Exception\ParseException;
use Symfony\Component\Yaml\Yaml;

try {
    $conf = Yaml::parseFile('./demo.conf');
    print_r($conf); // 获取所有配置
    print_r($conf['database']['slave']); // 获取指定配置
} catch (ParseException $e) {
    echo $e->getMessage();
}

Copyright © 2024 码农人生. All Rights Reserved