正在设置文件包含的基本应用程序路径


Setting Base Application Path For File Include

我在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

根据文档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方法。

为什么不把视图放在/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'); ?>
<?php include_once(echo base_url() .'/template/layout/header.php'); ?>

你做错了两件事。

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

include_one(base_url((。'/template/layout/header.php'(;

  1. 您正在尝试使用url而不是绝对路径加载文件。不能使用base_url(返回网站urlhttp://www.domain.com/),如果php.ini allow_url_open设置为关闭

您可以使用str_replace(SYSDIR.'/','',BASEPATH(获取到基的绝对路径

因此,以下代码将起作用:

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

正如上面2篇文章所说,在CI中做到这一点的正确方法是将它放在视图文件夹中,并使用CI加载功能加载它。