PHP函数参数不能正常工作?

时间:2012-03-05 14:58:24

标签: php

我正在尝试使用MVC建立一个网站,但我一开始就陷入困境。

在project0 / application / controllers中我有一个pages.php文件,如下所示:

<?php

class Pages extends CI_Controller {

public function view($page = 'home')
{

if (!file_exists('application/views/pages/'.$page.'.php'))
{
    // Whoops, we don't have a page for that!
    show_404();
}

$data['title'] = ucfirst($page); // Capitalize the first letter

$this->load->view('templates/header', $data);
$this->load->view('pages/'.$page, $data);
$this->load->view('templates/footer', $data);

}
}

并在project0 / application / views / pages中有两个名为home.php和about.php的文件,其中包含一个“Hello world”。

当我想访问http://project0/index.php/pages/view/about时,它会给我404错误:似乎home.php或about.php文件不存在。

有人可以帮帮我吗?

5 个答案:

答案 0 :(得分:1)

在您的脚本中,尝试getcwd();,然后根据相对路径'application/views/pages/'.$page.'.php'仔细检查该结果(您当前的工作目录)。我猜你不是在你认为的目录中寻找你的页面。

答案 1 :(得分:1)

你刚刚解决了自己的错误。您的网页home.php和about.php位于: project0/application/views

但您发布的代码正在

中查找

project0/application/views/pages/

答案 2 :(得分:1)

我认为您的代码是否可行取决于您的设置(服务器设置以及运行实际脚本的位置),但您可以使用多种方法之一使其更加万无一失。

您可以使用getcwd()函数:

if (!file_exists(getcwd().'application/views/pages/'.$page.'.php'))

或者您可以在主配置文件中定义永久站点路径,例如:

$config['path'] = '/home/project0/';

...

if (!file_exists($config['path'].'application/views/pages/'.$page.'.php'))

答案 3 :(得分:1)

尝试指定绝对路径而不是相对'application/views/pages/'.$page.'.php' - 它可能无法正常工作。

答案 4 :(得分:1)

你可能在错误的地方检查文件,我相信file_exists正在寻找相对于project0/application/controllers的路径。试试这个:

if (!file_exists('../views/pages/'.$page.'.php'))