如何设置 PHP 包含文件的根文件夹

2022-08-30 22:53:00

我花了几天时间研究互联网,我找不到我能理解并能够实现的答案。

我有一个网站,我想在其中使用文件,并能够在localhost和实际服务器中正确查看网站。include_once

我以前使用过,但它在本地主机上不起作用,所以我很难更新和更改网站。$_SERVER['DOCUMENT_ROOT']

我想做的是创建某种配置.php文件,我可以在其中告诉它根文件夹被调用或“开始”从那里查找文件。htdocspublic_html

或者有没有其他方法可以获得包含工作路径?

我见过例如,等的回复,但他们从未解释过它是如何工作的,在代码中写在哪里,等等。我有点厌倦了找到部分答案,然后兜圈子,只是试图“填补”空白。我不是PHP专家,只是想通过使用它来让我的生活更轻松一些。dirname(__FILE__)__DIR__


答案 1

dirname(__FILE__)两者相同,并附带PHP 5.3__DIR____DIR__

这些用于指示“它们调用的文件的路径”。

URL: http://localhost/test/a.php

DIR: --NIX
     /var/www/test/a.php
     --WIN
     D:\lamp\www\test\a.php

// a.php's inside
&lt?php
echo __DIR__;

在 linux 上给你这个:/var/www/test

因此,如果您在所有项目中都需要一个config参数,只需在config中定义它.php并在您希望包含的文件名的地方使用它。

./
  config.php
  index.php
  header.php
  footer.php
  /lib
    foo.php
  /tmp
    bar.php

./配置.phpdefine('ROOT', __DIR__ .'/');

./索引.phpinclude_once(ROOT .'header.php'); ... include_once(ROOT .'footer.php');

即,将其用于tmp dir

./吨/巴.phpinclude_once(ROOT .'lib/foo.php');

更新

// config.php
<?php
define("ROOT", __DIR__ ."/");

因此,我们用它来包含并正在等待index.phpbanner.phpbanner.php./banners/banner.php;

// index.php and the very first line!
<?php
include_once("config.php");
?>
// some html stuff
// ...
<?php include_once(ROOT ."banners/banner.php"); ?>
// some more html stuff
// ...

因此,您应该首先将config.php到您需要它的地方。

我认为,这是必要的基本要求...

更新

所以你的问题不是PHP系统,而是问题,无论如何......:)include

如果你的图像路径正在改变(所以不是固定的),你可以这样做;

// config.php
define("ROOT", __DIR__ ."/");
define("HTTP", ($_SERVER["SERVER_NAME"] == "localhost")
   ? "http://localhost/your_work_folder/"
   : "http://your_site_name.com/"
);

// banner.php
<img src="<?php print HTTP; ?>images/banner.gif">

答案 2

我通常设置您提到的,一个config.php在一个包含目录中,并在其中包含以下行:(“/include应该是您的config.php文件所在的任何目录,如果您在根目录中有它,则可以使用)。当我想在那之后包含任何其他文件时,我使用.define('BASE_PATH', str_replace('/include', '', dirname(__FILE__)));define('BASE_PATH', dirname(__FILE__));include_once(BASE_PATH . '/directory/file.php');

注意:这个概念无论如何都不是我原创的。


推荐