在万网虚拟主机上,发现laravel无法加载.env中配置的信息,然后一路跟踪发现,问题出在PHPDotEnv这个库上
在Loader.php里有一个函数如下:
public function setEnvironmentVariable($name, $value = null)
{
list($name, $value) = $this->normaliseEnvironmentVariable($name, $value);
// Don't overwrite existing environment variables if we're immutable
// Ruby's dotenv does this with `ENV[key] ||= value`.
if ($this->immutable && $this->getEnvironmentVariable($name) !== null) {
return;
}
putenv("$name=$value");
$_ENV[$name] = $value;
$_SERVER[$name] = $value;
}
里面使用了putenv函数,这个函数是用于设置或修改环境变量的,目的是把.env里面的配置放到环境变量里面。通过var_dump查看返回值发现都是NULL, 可以猜测万网虚拟主机应该是禁用了putenv这个函数。
解决办法就是放弃使用.env文件,把里面的一些配置信息放到config/app.php里面去。