为文件包含设置基本应用程序路径

时间:2013-04-17 16:34:49

标签: php codeigniter include codeigniter-2

我已经在StackOverflow上阅读了类似的主题,但不幸的是没有人解决这个问题(或者我只是没有看到正确的主题)。

我在视图home.php中有以下内容:

<?php include_once(echo base_url() .'/template/layout/header.php'); ?>

现在我的结构是这样的:

/public_html
    /template
    /layout
       /header.php
       /footer.php

该文件不包含,有谁知道为什么?

注意:我已将$config['base_url']设为www.domain.com

3 个答案:

答案 0 :(得分:2)

根据文档base_url()

  

此函数返回与site_url()相同的内容,没有   index_page或url_suffix被追加。

所以它应该返回http://www.domain.com/,这在include_once()

中使用是错误的

您要使用的是CI常量APPPATH

<?php include_once(APPPATH . 'template/layout/header.php'); ?>

如前所述,您应该将视图放在视图文件夹中并加载它们而不是包含它们。这是正确的CI方法。

答案 1 :(得分:0)

为什么不将您的观点置于/application/views/下,然后像这样加载它们?

$this->load->file('application/views/layout');
$this->load->view('layout.php');

无论如何你必须这样做:

<?php include_once(base_url().'/template/layout/header.php'); ?>

而不是:

<?php include_once(echo base_url() .'/template/layout/header.php'); ?>

答案 2 :(得分:0)

<?php include_once(echo base_url() .'/template/layout/header.php'); ?>

这里你做错了两件事。

  1. 代码不应该包含include_once内的echo。所以你的代码应该是
  2.   

    include_once(base_url()。'/ template / layout / header.php');

    1. 您正尝试使用网址而不是绝对路径加载文件。如果php.ini allow_url_open设置为off,则不能使用base_url(返回站点URL http://www.domain.com/)包含文件。
    2. 你可以使用str_replace获取base的绝对路径(SYSDIR。'/','',BASEPATH)

      以下代码将起作用:

      $abs_path = str_replace(SYSDIR.'/', '',BASEPATH);
      include_once($abs_path .'/template/layout/header.php');
      

      正如上面2篇文章中所述,在CI中执行此操作的正确方法是将其放在视图文件夹中并使用CI加载函数加载它。