当前位置: 首页 > news >正文

公司注册网站入口网站开发安全小贴士

公司注册网站入口,网站开发安全小贴士,网站建设服务器百度云,wordpress摘要调用介绍 对于应用程序运行的环境来说#xff0c;不同的环境有不同的配置通常是很有用的。Laravel 利用 Vance Lucas 的 PHP 库 DotEnv 使得此项功能的实现变得非常简单。当应用程序收到请求时#xff0c;.env 文件中列出的所有变量将被加载到 PHP 的超级全局变量 $_ENV 中。 使…介绍 对于应用程序运行的环境来说不同的环境有不同的配置通常是很有用的。Laravel 利用 Vance Lucas 的 PHP 库 DotEnv 使得此项功能的实现变得非常简单。当应用程序收到请求时.env 文件中列出的所有变量将被加载到 PHP 的超级全局变量 $_ENV 中。 使用 你可以使用 env 函数检索这些变量的值。事实上如果你查看 Laravel 的配置文件你就能注意到有数个选项已经使用了这个函数 debug env(APP_DEBUG, false),传递给 env 函数的第二个值是「默认值」。如果给定的键不存在环境变量则会使用该值。 使用分析 我们可以先看一下助手函数 env if (! function_exists(env)) {/*** Gets the value of an environment variable.** param string $key* param mixed $default* return mixed*/function env($key, $default null){return Env::get($key, $default);} }ENV::get 最终追踪到 EnvConstAdapter get /*** Get an environment variable, if it exists.** param string $name** return \PhpOption\Option*/public function get($name){if (array_key_exists($name, $_ENV)) {return Some::create($_ENV[$name]);}return None::create();}读取$_ENV内容$_ENV是 通过环境提供给脚本的变量 /*** xglobal $_ENV array** Variables provided to the script via the environment.* Analogous to the old $HTTP_ENV_VARS array (which is still available, but deprecated).** pa hrefhttps://secure.php.net/manual/en/reserved.variables.php* https://secure.php.net/manual/en/reserved.variables.php/a*/ $_ENV array();写入$_ENV bootstrap/app.php中 try {(new Laravel\Lumen\Bootstrap\LoadEnvironmentVariables(dirname(__DIR__)))-bootstrap();} catch (Dotenv\Exception\InvalidPathException $e) {//}Laravel\Lumen\Bootstrap\LoadEnvironmentVariables 中 ?phpnamespace Laravel\Lumen\Bootstrap;use Dotenv\Dotenv; use Dotenv\Exception\InvalidFileException; use Illuminate\Support\Env; use Symfony\Component\Console\Output\ConsoleOutput;class LoadEnvironmentVariables {/*** The directory containing the environment file.** var string*/protected $filePath;/*** The name of the environment file.** var string|null*/protected $fileName;/*** Create a new loads environment variables instance.** param string $path* param string|null $name* return void*/public function __construct($path, $name null){$this-filePath $path;$this-fileName $name;}/*** Setup the environment variables.** If no environment file exists, we continue silently.** return void*/public function bootstrap(){try {$this-createDotenv()-safeLoad();} catch (InvalidFileException $e) {$this-writeErrorAndDie([The environment file is invalid!,$e-getMessage(),]);}}/*** Create a Dotenv instance.** return \Dotenv\Dotenv*/protected function createDotenv(){return Dotenv::create($this-filePath,$this-fileName,Env::getFactory());}/*** Write the error information to the screen and exit.** param string[] $errors* return void*/protected function writeErrorAndDie(array $errors){$output (new ConsoleOutput)-getErrorOutput();foreach ($errors as $error) {$output-writeln($error);}die(1);} }我们可以看到 bootstrap方法是创建Dotenv实例并且调用Dotenv实例的safeload方法Dotenv::create参数的含义 $this-filePath, #env所在目录$this-fileName, #env名称默认 .envEnv::getFactory() #laravel env相关的适配器工厂由此我们可以自定义.env的位置和名称 safeload方法 /*** Load environment file in given directory.** throws \Dotenv\Exception\InvalidPathException|\Dotenv\Exception\InvalidFileException** return arraystring|null*/public function load(){return $this-loadData();}/*** Load environment file in given directory, silently failing if it doesnt exist.** throws \Dotenv\Exception\InvalidFileException** return arraystring|null*/public function safeLoad(){try {return $this-loadData();} catch (InvalidPathException $e) {// suppressing exceptionreturn [];}}/*** Load environment file in given directory.** throws \Dotenv\Exception\InvalidPathException|\Dotenv\Exception\InvalidFileException** return arraystring|null*/public function overload(){return $this-loadData(true);}/*** Actually load the data.** param bool $overload** throws \Dotenv\Exception\InvalidPathException|\Dotenv\Exception\InvalidFileException** return arraystring|null*/protected function loadData($overload false){return $this-loader-setImmutable(!$overload)-load();}根据代码分析safeLoad 中使用了 try {} catuch {} 捕获了异常不会因为地址错误而报错同时加载loadData,这里默认使用了loadData true, 影响的Dotenv 创建的 DotenvVariables(array $adapters, $immutable)实例属性 $immutable值。我们通过追踪load方法最终可以找到该方法 /*** Set an environment variable.** param string $name* param string|null $value** throws \InvalidArgumentException** return void*/public function set($name, $value null){if (!is_string($name)) {throw new InvalidArgumentException(Expected name to be a string.);}// Dont overwrite existing environment variables if were immutable// Rubys dotenv does this with ENV[key] || value.if ($this-isImmutable() $this-get($name) ! null $this-loaded-get($name)-isEmpty()) {return;}$this-setInternal($name, $value);$this-loaded-set($name, );}此时我们明白如果$immutable true的话如果之前环境变量有了该值后面的配置文件无法进行更改环境变量的值如果没有该值进行添加
http://www.w-s-a.com/news/356341/

相关文章:

  • 建设银行企业网站访问不了wordpress搬到谷歌服务器
  • 网站建设与网站优化销售别墅庭院园林景观设计公司
  • 沈阳红方城网站建设专业的微网站哪家好
  • 医院网站asp东营信息发布平台
  • 网站全站建设开题报告范文南京本地网站
  • 网站漏洞扫描工具wampserver集成环境搭建了一个织梦cms网站
  • 如何在局域网上做网站宁波设计公司排行榜
  • 自己的电脑做网站服务器吗百度搜索风云榜总榜
  • 做化妆品的一些网站企业网站建设与营运计划书
  • 重庆速代网络科技seo整站优化服务教程
  • 成都比较好的装修设计公司seo3的空间构型
  • 开发商建设审批网站成都创意设计公司
  • 百度快照比网站上线时间早wordpress新建阅读量字段
  • 国家工程建设标准化协会网站网站开发工具有
  • 上海网站建设集中公关公司组织架构图
  • wordpress副标题的作用百度网站标题优化
  • 大连哪家公司做网站比较好wordpress 判断用户组
  • 网站空间1g多少钱东莞公司高端网站建设
  • 网站服务器出错是什么意思做餐饮酒店网站
  • 房地产网站建设策划方案网站建设教程简笔画
  • 3d室内设计软件wordpress本地优化加速版
  • 南京高新区规划建设局网站石家庄哪里做网站比较好
  • 免费培训课程网站优化的方式
  • 做网站要固定电话在家自己做网站
  • 招聘网站开发视频新手如何做网站维护
  • flash 网站欣赏国外做的比较好的网站有哪些
  • 推广一个网站需要什么官网首页设计
  • 淘宝建设网站的理由企业官网建设哪家好
  • 青岛网站推wordpress主题切换
  • 天元建设集团有限公司资质郑州网站seo推广