以下代码显示以下错误:
Warning: require_once(/home/..../public_html/edu) [function.require-once]: failed to open stream: Success in /home/..../public_html/edu/index.php on line 25
Fatal error: require_once() [function.require]: Failed opening required '' (include_path='.:/usr/lib/php:/usr/local/lib/php') in /home/..../public_html/edu/index.php on line 25
我该如何解决这个问题?
<?php
class Model
{
public $tstring;
public function __construct(){
$this->tstring = "The string has been loaded through the template.";
$this->template = "tpl/template.php";
}
}
class View
{
private $model;
public function __construct($model) {
$this->controller = $controller;
$this->model = $model;
}
public function output(){
$data = "<p>" . $this->model->tstring ."</p>";
require_once($this->model->template); //line 25 Attention!!!!!!!!
}
}
class Controller
{
private $model;
public function __construct($model){
$this->model = $model;
}
public function clicked() {
$this->model->string = "Updated Data, thanks to MVC and PHP!";
}
}
$model = new Model();
$controller = new Controller($model);
$view = new View($controller, $model);
echo $view->output();
答案 0 :(得分:0)
当您使用相对或绝对/相对路径时,我发现事情大大简化了 - 因此您可以通过需要它的文件而不是根目录来访问您需要的文件。
例如,假设你有这样的设置:
--/
|
| --var
|
|--www
|
|--html
|
|--index.php
|
|--includes
|
|--util.php
客户端运行index.php文件。假设index.php需要包含util.php有三种方法可以做到这一点(index.php中将存在以下行)
require_once('/var/www/html/includes/util.php');
require_once('./includes/util.php');
require_once(dirname(__FILE__).'/includes/util.php');
如您所见,绝对方法从/目录开始寻址util.php文件。相对方法通过从index.php开始并提供从index.php获取到util.php的路径来解决util.php。绝对/相对方法实际上已解析为绝对方法,因为字符串dirname(__FILE__).'/includes/util.php'
实际上将解析为“/var/www/html/includes/util.php”,但功能仍然显示为相对,因为您只需要想想从index.php到util.php的路径。
我倾向于选择绝对/相对方法。
而不是$this->template = "tpl/template.php"
你可能想尝试
$this->template = dirname(__FILE__).'/tpl/template.php';
即使此时仍有问题,您也可以echo
$this->template
变量,以便准确查看要处理的文件。
对dirname(__FILE__)
部分感到困惑?这是一些链接。
http://us2.php.net/manual/en/language.constants.predefined.php
希望这会有所帮助并祝你好运!