我是否正确使用了__DIR__?

时间:2017-12-12 22:40:32

标签: php html http

我正在使用以下内容来包含我的config.php并使用以下方法将我的标题插入每个页面:

<?php require_once __DIR__."/config.php"; require_once SITE_ROOT."/templates/include/header.php" ?>

然而,当我这样做时,我收到以下错误:

  

警告:require_once(/opt/lampp/htdocs/templates/admin/config.php):无法打开流:/opt/lampp/htdocs/templates/admin/listArticles.php中没有这样的文件或目录1

对于referance,这就是config.php的样子:

<?php
ini_set( "display_errors", true );
date_default_timezone_set( "Australia/Sydney" );  // http://www.php.net/manual/en/timezones.php
define( "DB_DSN", "mysql:host=localhost;dbname=cms" );
define( "DB_USERNAME", "username" );
define( "DB_PASSWORD", "password" );
define( "CLASS_PATH", "classes" );
define( "TEMPLATE_PATH", "templates" );
define( "HOMEPAGE_NUM_ARTICLES", 5 );
define( "ADMIN_USERNAME", "admin" );
define( "ADMIN_PASSWORD", "mypass" );
define('SITE_ROOT', __DIR__);
require( CLASS_PATH . "/Article.php" );


function handleException( $exception ) {
  echo "Sorry, a problem occurred. Please try later.";
  error_log( $exception->getMessage() );
}

set_exception_handler( 'handleException' );
?>

也许值得一提的是,我之前收到一条错误,告诉我SITE_ROOT没有定义,但我已经通过包含目录befoer /config.php修复了这个问题。

我也试过在网站的其他地方使用require_once__DIR__ ..它工作正常。

有什么可能的原因可以看到错误?

1 个答案:

答案 0 :(得分:0)

查看您的错误消息

  

警告:require_once(/opt/lampp/htdocs/templates/admin/config.php):无法打开流:/opt/lampp/htdocs/templates/admin/listArticles.php中没有这样的文件或目录1

我认为你的config.php不应该和你的模板在同一条路径上。它需要使用相对路径,因此取决于文件的实际位置(我不知道这是什么)

<?php require_once __DIR__."/../../config.php"; require_once SITE_ROOT."/templates/include/header.php" ?>

或者类似于上面的内容,基于config.php的实际位置。

希望这有帮助。