【问题标题】:PHP Includes and relative/absolute pathing not workingPHP包含和相对/绝对路径不起作用
【发布时间】:2012-07-27 03:55:46
【问题描述】:

在我的站点 index.php 位于 /director 中,然后我还有几个其他 .php 文件位于 /episodes/10/ 中(10 是剧集编号)。

我在 index.php 中包含的路径只是 <?php include "includes/head.php"; ?>。这些路径在位于 episodes/10/ 文件夹中的 .php 文件中不起作用。所以我创建了路径<?php include "../../includes/head.php"; ?>,但无济于事。我尝试使用 <?php include "/includes/head.php"; ?> 将它们设为绝对路径,但这也不起作用。

我做错了什么?

【问题讨论】:

  • 允许在包含路径中使用.. 是有风险的,因此在许多安全配置下这是不可能的
  • 绝对路径是最好的。 /var/www/html/includes/head.php
  • 就像说的那样,我尝试简单地使用“/”。如果我从计算机的根目录执行此操作,那么一旦我将其推送到现场,那将一文不值。我必须再次更改所有路径。

标签: php html


【解决方案1】:

无论从哪个子目录运行都可以工作的解决方案:

include($_SERVER['DOCUMENT_ROOT'] . 'includes/head.php');

【讨论】:

  • 我试过这个,但它什么也没做?我应该用路径替换“DOCUMENT_ROOT”吗?我正在使用 MAMP 在本地对此进行测试,然后将其推送到开发服务器,因此我不想更改大量路径。
  • 不,你不必替换任何东西,你可以在我的答案中复制粘贴该行,它应该可以在任何主机上正常工作(假设你的包含文件夹在你的 web 根目录中)
  • 有趣。这适用于我的开发服务器,但不适用于本地。太感谢了。知道为什么这不能在本地运行 MAMP 吗?
  • 本地运行时,脚本是否在子目录中,比如localhost/dev/index.php?如果是这样,这就解释了为什么它不能在本地工作。
  • @Wouter,建议使用 DOCUMENT_ROOT SAPI 参数,但不能保证。 dirame(__FILE__) 作为相对地址的基础,在所有 PHP 5.x 版本中都很健壮。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-05-19
  • 1970-01-01
  • 2010-12-17
  • 1970-01-01
  • 2015-08-29
  • 1970-01-01
相关资源
最近更新 更多