Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/290.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/actionscript-3/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Laravel 5.1给出了';未定义索引:http#u主机';运行时';php artisan serve';_Php_Laravel 5 - Fatal编程技术网

Laravel 5.1给出了';未定义索引:http#u主机';运行时';php artisan serve';

Laravel 5.1给出了';未定义索引:http#u主机';运行时';php artisan serve';,php,laravel-5,Php,Laravel 5,我用Version5.4学习了6个月的laravel。我安装了最新的xampp。但现在我开始从事一个基于Laravel5.1的项目。但是当我想运行应用程序时,它会给我一个错误(未定义的索引:http_host)!如何找到错误的来源? 我怎样才能解决这个问题?我在网上搜索了一下,但没有发现任何结果。 你能帮帮我吗? Storage/log.php: [2017-07-18 21:55:50] local.ERROR: ErrorException: Undefined index: HTTP_HO

我用
Version5.4
学习了6个月的
laravel
。我安装了最新的xampp。但现在我开始从事一个基于Laravel5.1的项目。但是当我想运行应用程序时,它会给我一个错误(未定义的索引:http_host)!如何找到错误的来源? 我怎样才能解决这个问题?我在网上搜索了一下,但没有发现任何结果。 你能帮帮我吗? Storage/log.php:

[2017-07-18 21:55:50] local.ERROR: ErrorException: Undefined index: HTTP_HOST in H:\Current\school\school\app\Providers\AppServiceProvider.php:40
堆栈跟踪:

#0 H:\Current\school\school\app\Providers\AppServiceProvider.php(40): Illuminate\Foundation\Bootstrap\HandleExceptions->handleError(8, 'Undefined index...', 'H:\\Current\\scho...', 40, Array)
#1 [internal function]: Erp\Providers\AppServiceProvider->boot()
#2 H:\Current\school\school\vendor\laravel\framework\src\Illuminate\Container\Container.php(507): call_user_func_array(Array, Array)
#3 H:\Current\school\school\vendor\laravel\framework\src\Illuminate\Foundation\Application.php(734): Illuminate\Container\Container->call(Array)
#4 H:\Current\school\school\vendor\laravel\framework\src\Illuminate\Foundation\Application.php(717): Illuminate\Foundation\Application->bootProvider(Object(Erp\Providers\AppServiceProvider))
#5 [internal function]: Illuminate\Foundation\Application->Illuminate\Foundation\{closure}(Object(Erp\Providers\AppServiceProvider), 18)
#6 H:\Current\school\school\vendor\laravel\framework\src\Illuminate\Foundation\Application.php(718): array_walk(Array, Object(Closure))
#7 H:\Current\school\school\vendor\laravel\framework\src\Illuminate\Foundation\Bootstrap\BootProviders.php(17): Illuminate\Foundation\Application->boot()
#8 H:\Current\school\school\vendor\laravel\framework\src\Illuminate\Foundation\Application.php(203): Illuminate\Foundation\Bootstrap\BootProviders->bootstrap(Object(Illuminate\Foundation\Application))
#9 H:\Current\school\school\vendor\laravel\framework\src\Illuminate\Foundation\Console\Kernel.php(208): Illuminate\Foundation\Application->bootstrapWith(Array)
#10 H:\Current\school\school\vendor\laravel\framework\src\Illuminate\Foundation\Console\Kernel.php(105): Illuminate\Foundation\Console\Kernel->bootstrap()
#11 H:\Current\school\school\artisan(35): Illuminate\Foundation\Console\Kernel->handle(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
#12 {main}  
AppServiceProvider:

public function boot()

{

    if(!Session::get(SITE_ID)){
        $subdomain_name = array_shift((explode(".",$_SERVER['HTTP_HOST'])));
        if(isset($subdomain_name) && !empty($subdomain_name)){
            $domain = $subdomain_name;
        }else{
            $domain = "school";
        }
        $siteToRecollect = DB::table('site_infos')->where('site_alias',$domain)->first();

        if(isset($siteToRecollect->id) && !empty($siteToRecollect->id) && $siteToRecollect->id != 0){

            Session::put(SITE_ID,$siteToRecollect->id);

        }else{

            Session::put(SITE_ID,1);

        }

    }

}
40行:

$subdomain_name = array_shift((explode(".",$_SERVER['HTTP_HOST'])));

变量
$\u SERVER['HTTP\u HOST']
仅在浏览器上工作,而不是在PHP-CLI上工作,因此当您运行命令
PHP artisan
$\u SERVER['HTTP\u HOST']
时,将不存在,您可以在此处进行检查

在这种情况下,您可以通过检查
$\u服务器['HTTP\u HOST']
是否存在来修复代码

if(isset($_SERVER['HTTP_HOST']) && !empty($_SERVER['HTTP_HOST'])){
    $gethost = explode(".",$_SERVER['HTTP_HOST']);
    $domain = array_shift($gethost);
}else{
    $domain = "school";
}
关于行将解决您的问题,并有一点改进。这里是完整版本的固定代码和测试

public function boot()
{
    if(!Session::get(SITE_ID)){
        $domain = "school";
        if(isset($_SERVER['HTTP_HOST']) && !empty($_SERVER['HTTP_HOST'])){
            $gethost = explode(".",$_SERVER['HTTP_HOST']);
            $domain = array_shift($gethost);
        }
        $siteToRecollect = DB::table('site_infos')->where('site_alias', $domain)->first();
        if(isset($siteToRecollect->id) != 0 && !empty($siteToRecollect->id))
        {
            Session::put(SITE_ID, $siteToRecollect->id);
        }else{
            Session::put(SITE_ID,1);
        }
    }
}

希望获得此帮助,

发布日志而不是自动加载。请问在哪里可以找到日志文件?您可以在
存储\logs
中找到日志文件,删除此处的每个文件并重新运行artisan命令以获取错误,然后打开日志文件并更新帖子编辑我的问题@vietnguyen09检查我的答案谢谢!你能解释一下代码的作用吗?正如我所说,这不是我的任务,但我会努力的。我有表“site\u infos”,其中有“site\u alias”列。据我所知,每次加载页面时都会运行引导方法。那么,引导方法中的代码是什么呢?您可以从这里读取,但无论如何,我认为您应该找到另一种方法来执行此操作,而不是为每个请求向数据库发送查询,这是不好的。我应该做什么来代替此操作?这取决于您的系统,如果表
site\u infos
中的数据不太多,您可以将它们放入配置中并从中读取。如果表中的行太多,则应使用
memcache
redis
存储并读取它们。我的站点信息表不太大。我不知道如何在每次加载页面时都将其放入config并使用它。不知道memcache或redis。你有我可以从哪里学到这些的链接吗?