我刚刚将我的codeigniter网站上传到了实时服务器,然后我不得不处理一些弹出的错误。我现在遇到的问题很奇怪。我的主要" Page" controller将多个视图一起编译以构建页面。例如,我通过我的控制器将页眉,导航栏,内容和页脚添加到页面,但只有内容视图才能通过。这是在页面控制器中构建我的页面的主要功能:
public function view($page = 'home')
{
if (!file_exists(APPPATH . '/views/pages/' . $page . '.php')) {
// If the page does not exist
show_404();
}
$data['title'] = ucfirst($page); // Capitalize the first letter of title
$this->load->view('templates/header', $data); // Load the Header
$this->load->view('templates/navbar', $data); // Load the Navbar
$this->load->view('pages/' . $page); // Load the defined page
$this->load->view('templates/footer'); // Load the footer
}
我上传的服务器是Linux服务器,具有非常高的区分大小写。我不得不将我的控制器从page.php重命名为Page.php,只是为了codeigniter找到我试图构建的视图。虽然我的缺席视图"错误已经解决,只有我的页面通过我的控制器,而不是模板文件夹中的文件。
该网站在我的Windows Xampp服务器上工作正常,但不适用于此在线环境。我检查了所有已编辑的文件是否存在大写/大写问题,但找不到任何问题。据我所知,codeigniter文件本身应该支持linux和windows。有谁知道我做错了什么?我对codeigniter很新。
答案 0 :(得分:0)
如前所述,Linux区分大小写,但这不会导致您的问题。
您是否尝试动态嵌入页面? 如果是这样,那么你可以尝试这种方法。将页面作为变量传递。 我会构建一个主模板而不是您当前的方法,因为它会使嵌入更容易。
function view(){
$this->load->view('pages', array(
'page_view' => $page
));
}
<?php echo $page_view; ?>
答案 1 :(得分:0)
暂时将以下内容添加到index.php
文件的顶部,以确保显示所有错误。 请务必在上线时将其删除!
error_reporting(E_ALL);
ini_set('display_errors', 1);
通常我在Ubuntu中进行文件命名时会做以下事情。
我的所有文件名都是小写的,如page.php
,templates/header.php
等等......
类名如下:class Page {}
我总是在我的代码中以小写引用我的类,库,视图和任何模块,例如:
# file: application/models/my_model.php
class My_model extends CI_Model {}
# file: application/controllers/page.php
# loaded this way:
$this->load->model('my_model');
# and used this way:
$this->my_model->some_model_function();
对于数据库错误,请检查新服务器mysql用户配置。并且您可能会收到headers are already sent
错误,因为在代码中出现session_start()
之前发生了错误,这意味着错误被回显,并且在第一个echo
语句之前发送了标头,无法开始会话。如果你修复了相应的错误,这就消失了。