Files
OMS/app/base/examples/config.php
2026-01-04 19:08:31 +08:00

415 lines
15 KiB
PHP
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<?php
/**
* Copyright 2012-2026 ShopeX (https://www.shopex.cn)
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
/**
* 网店配置模板
*
* 版本 $Id: config.sample.php 37482 2009-12-08 10:54:56Z ever $
* 配置参数讨论专贴 http://www.shopex.cn/bbs/thread-61957-1-1.html
*/
// 可配置项总览envMap 已集中定义;下方保留逐条配置作对照)
// 推荐在 .env 中设置以下 key系统按 env 优先、无值用 default。
// 读取同级/上级 .env支持 key=value便于本地安装不改代码
if (!function_exists('__load_env_if_exists')) {
function __load_env_if_exists(array $paths)
{
foreach ($paths as $envFile) {
if (!$envFile || !is_readable($envFile)) {
continue;
}
$lines = file($envFile, FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES);
foreach ($lines as $line) {
if (strpos(ltrim($line), '#') === 0) {
continue;
}
$parts = explode('=', $line, 2);
if (count($parts) !== 2) {
continue;
}
$k = trim($parts[0]);
$v = trim($parts[1]);
// 去掉包裹引号
if ((str_starts_with($v, '"') && str_ends_with($v, '"')) || (str_starts_with($v, "'") && str_ends_with($v, "'"))) {
$v = substr($v, 1, -1);
}
putenv($k.'='.$v);
$_ENV[$k] = $v;
}
}
}
}
$envCandidates = array(
__DIR__.'/.env',
);
// 去重
$envCandidates = array_values(array_unique(array_filter($envCandidates)));
__load_env_if_exists($envCandidates);
// 数据库 : 用户/密码/库名/主机/持久连接 -> ONEX_OMS_DB_USER / ONEX_OMS_DB_PASSWORD / ONEX_OMS_DB_NAME / ONEX_OMS_DB_HOST / ONEX_OMS_DB_PCONNECT
// 运行控制 : URL 重写、密钥、表前缀、时区、禁缓存/禁 kv -> ONEX_OMS_WITH_REWRITE / ONEX_OMS_STORE_KEY / ONEX_OMS_DB_PREFIX / ONEX_OMS_DEFAULT_TIMEZONE / ONEX_OMS_WITHOUT_CACHE / ONEX_OMS_WITHOUT_KVSTORE_PERSISTENT
// 调优 : 字符集、排序、前端调试、HTTPS 支持 -> ONEX_OMS_DB_CHARSET / ONEX_OMS_DB_COLLATE / ONEX_OMS_DEBUG_JS / ONEX_OMS_WITH_HTTPS_SUPPORT
// 目录常量 : 根目录自动计算,其余可改 -> ROOT_DIR / DATA_DIR / THEME_DIR / PUBLIC_DIR / MEDIA_DIR / SECACHE_SIZE / MAIL_LOG / DEFAULT_INDEX / SERVER_TIMEZONE / WITHOUT_GZIP / WITHOUT_STRIP_HTML
// 日志 : 级别/类型/格式/日志文件/头部 -> ONEX_OMS_LOG_LEVEL / ONEX_OMS_LOG_TYPE / ONEX_OMS_LOG_FORMAT / LOG_FILE / LOG_HEAD_TEXT
// KV : 后端选择、前缀、memcache/memcached/redis 配置 -> ONEX_OMS_KVSTORE_STORAGE / ONEX_OMS_KV_PREFIX / ONEX_OMS_KVSTORE_MEMCACHE_CONFIG / ONEX_OMS_KVSTORE_MEMCACHED_CONFIG / ONEX_OMS_KVSTORE_REDIS_CONFIG / ONEX_OMS_KVSTORE_REDIS_AUTH
// Cache : 后端选择及各存储配置 -> ONEX_OMS_CACHE_STORAGE / ONEX_OMS_CACHE_MEMCACHE_CONFIG / ONEX_OMS_CACHE_MEMCACHED_CONFIG / ONEX_OMS_CACHE_REDIS_CONFIG / ONEX_OMS_CACHE_REDIS_AUTH / ONEX_OMS_CACHE_ALICACHE_CONFIG / ONEX_OMS_CACHE_XCACHE_CONFIG / ONEX_OMS_CACHE_WINCACHE_CONFIG / ONEX_OMS_CACHE_EACCELERATOR_CONFIG / ONEX_OMS_CACHE_APC_CONFIG / ONEX_OMS_CACHE_ECAE_CONFIG / ONEX_OMS_CACHE_SECACHE_CONFIG
// 可选功能 : 安全模式/模板/入口/代理/触发器/从库/镜像/存储/压缩/静态/日志 -> ONEX_OMS_SAFE_MODE / ONEX_OMS_TEMPLATE_MODE / ONEX_OMS_APP_ROOT_PHP / ONEX_OMS_HTTP_PROXY / ONEX_OMS_TRIGGER_LOG / ONEX_OMS_DISABLE_TRIGGER / ONEX_OMS_BLACKLIST / ONEX_OMS_DB_SLAVE_NAME / ONEX_OMS_DB_SLAVE_USER / ONEX_OMS_DB_SLAVE_PASSWORD / ONEX_OMS_DB_SLAVE_HOST / ONEX_OMS_HOST_MIRRORS / ONEX_OMS_WITH_STORAGER / ONEX_OMS_GZIP_CSS / ONEX_OMS_GZIP_JS / ONEX_OMS_FILE_STORAGER / ONEX_OMS_STORAGE_MEMCACHED / ONEX_OMS_APP_STATICS_HOST / ONEX_OMS_MONOLOG_OPTIONS
// ** envMap 集中定义(执行后续仍保留逐条配置,便于对照) ** //
$defaultRootDir = realpath(dirname(__FILE__) . '/../');
$envMap = array(
// DB 基础
'DB_USER' => array(
'env' => 'ONEX_OMS_DB_USER',
'default' => 'usernamehere',
), # DB 用户
'DB_PASSWORD' => array(
'env' => 'ONEX_OMS_DB_PASSWORD',
'default' => 'yourpasswordhere',
), # DB 密码
'DB_NAME' => array(
'env' => 'ONEX_OMS_DB_NAME',
'default' => 'putyourdbnamehere',
), # DB 名
'DB_HOST' => array(
'env' => 'ONEX_OMS_DB_HOST',
'default' => 'localhost',
), # DB 主机
'DB_PCONNECT' => array(
'env' => 'ONEX_OMS_DB_PCONNECT',
'default' => null,
'bool' => true,
), # 持久连接开关
// 运行时控制
'WITH_REWRITE' => array(
'env' => 'ONEX_OMS_WITH_REWRITE',
'default' => false,
'bool' => true,
), # URL 重写
'STORE_KEY' => array(
'env' => 'ONEX_OMS_STORE_KEY',
'default' => '',
), # 密钥
'DB_PREFIX' => array(
'env' => 'ONEX_OMS_DB_PREFIX',
'default' => 'sdb_',
), # 表前缀
'DEFAULT_TIMEZONE' => array(
'env' => 'ONEX_OMS_DEFAULT_TIMEZONE',
'default' => '8',
), # 默认时区
'WITHOUT_CACHE' => array(
'env' => 'ONEX_OMS_WITHOUT_CACHE',
'default' => false,
'bool' => true,
), # 全局禁缓存
'WITHOUT_KVSTORE_PERSISTENT' => array(
'env' => 'ONEX_OMS_WITHOUT_KVSTORE_PERSISTENT',
'default' => false,
'bool' => true,
), # 禁 kv 持久
// 调优参数
'DB_CHARSET' => array(
'env' => 'ONEX_OMS_DB_CHARSET',
'default' => 'utf8mb4',
), # 字符集
'DB_COLLATE' => array(
'env' => 'ONEX_OMS_DB_COLLATE',
'default' => '',
), # 排序规则
'DEBUG_JS' => array(
'env' => 'ONEX_OMS_DEBUG_JS',
'default' => false,
'bool' => true,
), # 前端调试
'WITH_HTTPS_SUPPORT' => array(
'env' => 'ONEX_OMS_WITH_HTTPS_SUPPORT',
'default' => 'Off',
), # HTTPS 支持
// 目录与常量
'ROOT_DIR' => array(
'default' => $defaultRootDir,
), # 根目录
'DATA_DIR' => array(
'default' => $defaultRootDir.'/data',
), # 数据目录
'THEME_DIR' => array(
'default' => $defaultRootDir.'/themes',
), # 主题目录
'PUBLIC_DIR' => array(
'default' => $defaultRootDir.'/public',
), # 公共目录
'MEDIA_DIR' => array(
'default' => $defaultRootDir.'/public/images',
), # 媒体目录
'SECACHE_SIZE' => array(
'default' => '1024M',
), # secache 大小
'MAIL_LOG' => array(
'default' => false,
), # 邮件日志开关
'DEFAULT_INDEX' => array(
'default' => '',
), # 默认首页
'SERVER_TIMEZONE' => array(
'default' => 8,
), # 服务器时区
'WITHOUT_GZIP' => array(
'default' => false,
), # 关闭 GZIP
'WITHOUT_STRIP_HTML' => array(
'default' => true,
), # 关闭 strip html
// 日志
'LOG_FILE' => array(
'default' => $defaultRootDir.'/data/logs/{date}/{ip}.php',
), # 日志文件
'LOG_HEAD_TEXT' => array(
'default' => '<' . '?php exit()?' . ">\n",
), # 日志头
'LOG_LEVEL' => array(
'env' => 'ONEX_OMS_LOG_LEVEL',
'default' => null,
), # 日志级别
'LOG_TYPE' => array(
'env' => 'ONEX_OMS_LOG_TYPE',
'default' => null,
), # 日志类型
'LOG_FORMAT' => array(
'env' => 'ONEX_OMS_LOG_FORMAT',
'default' => null,
), # 日志格式
// kvstore / cache
'KVSTORE_STORAGE' => array(
'env' => 'ONEX_OMS_KVSTORE_STORAGE',
'default' => 'base_kvstore_filesystem',
), # kv 存储
'KVSTORE_MEMCACHE_CONFIG' => array(
'env' => 'ONEX_OMS_KVSTORE_MEMCACHE_CONFIG',
'default' => null,
), # kv memcache 配置
'KVSTORE_MEMCACHED_CONFIG' => array(
'env' => 'ONEX_OMS_KVSTORE_MEMCACHED_CONFIG',
'default' => null,
), # kv memcached 配置
'KVSTORE_REDIS_CONFIG' => array(
'env' => 'ONEX_OMS_KVSTORE_REDIS_CONFIG',
'default' => null,
), # kv redis 配置
'KVSTORE_REDIS_AUTH' => array(
'env' => 'ONEX_OMS_KVSTORE_REDIS_AUTH',
'default' => null,
), # kv redis 密码
'CACHE_STORAGE' => array(
'env' => 'ONEX_OMS_CACHE_STORAGE',
'default' => 'base_cache_secache',
), # 缓存存储
'KV_PREFIX' => array(
'env' => 'ONEX_OMS_KV_PREFIX',
'default' => null,
), # kv 前缀
'CACHE_MEMCACHE_CONFIG' => array(
'env' => 'ONEX_OMS_CACHE_MEMCACHE_CONFIG',
'default' => null,
), # cache memcache 配置
'CACHE_MEMCACHED_CONFIG' => array(
'env' => 'ONEX_OMS_CACHE_MEMCACHED_CONFIG',
'default' => null,
), # cache memcached 配置
'CACHE_REDIS_CONFIG' => array(
'env' => 'ONEX_OMS_CACHE_REDIS_CONFIG',
'default' => null,
), # cache redis 配置
'CACHE_REDIS_AUTH' => array(
'env' => 'ONEX_OMS_CACHE_REDIS_AUTH',
'default' => null,
), # cache redis 密码
'CACHE_ALICACHE_CONFIG' => array(
'env' => 'ONEX_OMS_CACHE_ALICACHE_CONFIG',
'default' => null,
), # alicache 配置
'CACHE_XCACHE_CONFIG' => array(
'env' => 'ONEX_OMS_CACHE_XCACHE_CONFIG',
'default' => null,
), # xcache 配置
'CACHE_WINCACHE_CONFIG' => array(
'env' => 'ONEX_OMS_CACHE_WINCACHE_CONFIG',
'default' => null,
), # wincache 配置
'CACHE_EACCELERATOR_CONFIG' => array(
'env' => 'ONEX_OMS_CACHE_EACCELERATOR_CONFIG',
'default' => null,
), # eaccelerator 配置
'CACHE_APC_CONFIG' => array(
'env' => 'ONEX_OMS_CACHE_APC_CONFIG',
'default' => null,
), # apc 配置
'CACHE_ECAE_CONFIG' => array(
'env' => 'ONEX_OMS_CACHE_ECAE_CONFIG',
'default' => null,
), # ecae 配置
'CACHE_SECACHE_CONFIG' => array(
'env' => 'ONEX_OMS_CACHE_SECACHE_CONFIG',
'default' => null,
), # secache 配置
// Session
'SESS_NAME' => array(
'env' => 'ONEX_OMS_SESS_NAME',
'default' => null,
), # session 名称
'SESS_CACHE_EXPIRE' => array(
'env' => 'ONEX_OMS_SESS_CACHE_EXPIRE',
'default' => null,
), # session 过期(分钟)
// 其他可选
'SAFE_MODE' => array(
'env' => 'ONEX_OMS_SAFE_MODE',
'default' => null,
'bool' => true,
), # 安全模式
'TEMPLATE_MODE' => array(
'env' => 'ONEX_OMS_TEMPLATE_MODE',
'default' => null,
), # 模板模式
'APP_ROOT_PHP' => array(
'env' => 'ONEX_OMS_APP_ROOT_PHP',
'default' => null,
), # 自定义入口
'HTTP_PROXY' => array(
'env' => 'ONEX_OMS_HTTP_PROXY',
'default' => null,
), # HTTP 代理
'TRIGGER_LOG' => array(
'env' => 'ONEX_OMS_TRIGGER_LOG',
'default' => null,
'bool' => true,
), # 触发器日志
'DISABLE_TRIGGER' => array(
'env' => 'ONEX_OMS_DISABLE_TRIGGER',
'default' => null,
'bool' => true,
), # 禁用触发器
'BLACKLIST' => array(
'env' => 'ONEX_OMS_BLACKLIST',
'default' => null,
), # 前台黑名单
'DB_SLAVE_NAME' => array(
'env' => 'ONEX_OMS_DB_SLAVE_NAME',
'default' => null,
), # 从库名
'DB_SLAVE_USER' => array(
'env' => 'ONEX_OMS_DB_SLAVE_USER',
'default' => null,
), # 从库用户
'DB_SLAVE_PASSWORD' => array(
'env' => 'ONEX_OMS_DB_SLAVE_PASSWORD',
'default' => null,
), # 从库密码
'DB_SLAVE_HOST' => array(
'env' => 'ONEX_OMS_DB_SLAVE_HOST',
'default' => null,
), # 从库主机
'HOST_MIRRORS' => array(
'env' => 'ONEX_OMS_HOST_MIRRORS',
'default' => null,
), # 镜像域名
'WITH_STORAGER' => array(
'env' => 'ONEX_OMS_WITH_STORAGER',
'default' => null,
), # 存储驱动
'GZIP_CSS' => array(
'env' => 'ONEX_OMS_GZIP_CSS',
'default' => null,
'bool' => true,
), # gzip CSS
'GZIP_JS' => array(
'env' => 'ONEX_OMS_GZIP_JS',
'default' => null,
'bool' => true,
), # gzip JS
'FILE_STORAGER' => array(
'env' => 'ONEX_OMS_FILE_STORAGER',
'default' => null,
), # 文件存储
'STORAGE_MEMCACHED' => array(
'env' => 'ONEX_OMS_STORAGE_MEMCACHED',
'default' => null,
), # memcached 节点
'APP_STATICS_HOST' => array(
'env' => 'ONEX_OMS_APP_STATICS_HOST',
'default' => null,
), # 静态资源 host
'MONOLOG_OPTIONS' => array(
'env' => 'ONEX_OMS_MONOLOG_OPTIONS',
'default' => null,
), # Monolog 配置
);
if (!function_exists('__env_or_default')) {
function __env_or_default($key, $default = null, $asBool = false)
{
$v = getenv($key);
if ($v === false) {
$v = null;
}
if ($v === null) {
$v = $default;
}
if ($asBool && $v !== null) {
$v = in_array(strtolower((string)$v), array('1','true','on','yes'), true);
}
return $v;
}
}
foreach ($envMap as $name => $cfg) {
if (defined($name)) {
continue;
}
$val = null;
if (is_array($cfg)) {
$asBool = !empty($cfg['bool']);
if (isset($cfg['env'])) {
$val = __env_or_default($cfg['env'], array_key_exists('default', $cfg) ? $cfg['default'] : null, $asBool);
} elseif (array_key_exists('default', $cfg)) {
$val = $cfg['default'];
if ($asBool && $val !== null) {
$val = (bool)$val;
}
}
} else {
$val = $cfg;
}
if ($val !== null) {
define($name, $val);
}
}
// ** 数据库配置 ** //
@ini_set('memory_limit','32M');