如何在include

时间:2017-12-04 09:29:48

标签: php

我正在尝试创建一些“config.php”,我将定义全局变量,例如项目的默认路径。如何在include?中使用此定义的变量

我的config.php:

$path = $_SERVER['DOCUMENT_ROOT'] . "/docme/";

require_once "resources/scripts/pdo.php";

ini_set('display_errors', TRUE);
date_default_timezone_set( "Europe/Prague" );

//Nastavení konstant webu
define('DB_NAME', 'project');
define('DB_USER', 'root');
define('DB_PASSWORD', 'pswd');
define('DB_HOST', '127.0.0.1');
define('SITETITLE', 'DocMe!');
define('PATH', $path);

现在我需要在include中使用PATH变量,它是否可能?

<?php
   require_once "config.php";
   include_once PATH."/index.php";
?>

好的抱歉,这里的问题是我没有意识到其他地方确实存在问题。在localhost它工作正常,在网站(实时)它不工作,因为$ path = $ _SERVER ['DOCUMENT_ROOT'] =仅返回我“/".

2 个答案:

答案 0 :(得分:1)

是的,您可以在包含config.php文件的任何文件中使用PATH / 常量 /

但这是我们所需要的,包括index.php

  

include_once PATH。“/ index.php”;

答案 1 :(得分:1)

“是的,它正在使用localhost,但为什么它不能在现场网站上使用$ _SERVER ['DOCUMENT_ROOT']?它只返回”/“而不是像”student.sps-prosek.cz / .... “;使用$ path = $ _SERVER ['HTTP_HOST'']更好吗?”

我理解你的问题,问题是当你部署到服务器时,url会改变。

试试这段代码

<?php

define('PROJECT_BASE_FOLDER'    , substr($_SERVER['REQUEST_URI'], 0, 8) == '/sample/' ? '/sample/' : '');
//sample is the name of the folder. the 0 to 8 is how many char your project name has including the '/'

define('PROJECT_FOLDER'         , substr($_SERVER['REQUEST_URI'], 0, 8) == '/sample/' ? '' : '');
define('HTTP'                   , 'http://');
define('BASE_PATH'              , $_SERVER['DOCUMENT_ROOT'] . PROJECT_BASE_FOLDER . PROJECT_FOLDER);

define('SITE_URL'               , HTTP . $_SERVER['SERVER_NAME'] . str_replace($_SERVER['DOCUMENT_ROOT'] . '/', '', BASE_PATH));
// or ':8080/' is the port you are using in your local machine
define('SITE_URL'               , HTTP . $_SERVER['SERVER_NAME'] . ':8080/' . str_replace($_SERVER['DOCUMENT_ROOT'] . '/', '', BASE_PATH));

因此,在您的代码中,您将使用

<?php
   require_once "config.php";
   include_once BASE_PATH ."/index.php";
?>

这应该可以正常运行,因为我每次需要部署到服务器时都不必更改目录。