如何在PHP中正确指定路径名?

时间:2010-08-04 13:20:39

标签: php

我正在用PHP做一个小型家庭计算项目,我正在创建像这样的引用......

<a href=\"list_beer.php?order_by=name\">Beer</a>

这似乎找到了正确的文件。当我做包含时,我似乎需要一个路径名。

include_once ("/var/www/common.php");

我确定这不对。也许你可以告诉我这些东西的最佳实践是什么,这样我就可以创建与特定路径名(或操作系统没有关联)的脚本,以便在第一个例子中选择的文件是已知的/可以控制吗?也许是php.ini或apache中的一些设置?

谢谢。

4 个答案:

答案 0 :(得分:3)

您也可以在PHP中使用相对路径:

 include_once './common.php';

此路径现在相对于脚本, intitially 调用。

如果你遗漏了点

 include_once 'common.php';

PHP将检查您include_path中的所有路径,如果找不到名为common.php的文件,则会尝试将common.php相对于当前包含文件。

许多人都习惯于在index.php中定义一个常量,例如ROOT,这个常量在其他地方使用:

 const ROOT = __DIR__; // as of PHP 5.3
 define('ROOT', dirname(__FILE__)); // if you don't have PHP 5.3

答案 1 :(得分:2)

你可以:

  • 使用相对路径名。路径应该相对于最初执行的脚本的目录(除非脚本明确更改了目录)。
  • 使用$_SERVER['DOCUMENT_ROOT']

答案 2 :(得分:2)

实际上,两者都需要绝对路径。

对于网络资源,它应该从网络根目录开始 - /

对于文件,您需要一个虚拟路径符合文件系统的文件。
$_SERVER['DOCUMENT_ROOT']就是为了这个目的。

所以

<a href="/list_beer.php?order_by=name">Beer</a>

include_once ($_SERVER['DOCUMENT_ROOT']."/common.php");

将按预期工作

答案 3 :(得分:2)

php ini文件设置

include_path = var / www / includes

意味着你只是忘记了关于相对和绝对路径的所有废话。

重要的不是你打电话给include / require的机智。

即使在说:

/var/www/html/example.com/very/long/way/down/index.php

可以包含该行;

包括'settings.php';

如果settings.php在/ var / www / includes /中,则会包含它。

你也可以在apache中的各个地方覆盖ini设置,即使在.htaccess中

这当然会将您的应用程序与您的服务器设置联系起来,有些人认为这些设置是不可接受的,但如果您没有分发您的内容,那么也请阅读ini_get和ini_set。

然后,您可以继续在include文件夹中创建自然目录,例如/ database,并在其中保留数据库设置。