4

我不确定这解决起来有多简单,但我认为我做错了什么。我是 PHP 新手,请多多包涵。

当我开始学习 PHP 时,我总是将我所有的项目文件放在同一个文件夹中index.php,因此包括这样的所有内容:

<?php
include('./translation.php');
?>

后来在学习的过程中,随着经验的积累和技能的提高,我不得不开始使用文件夹并将我的文件放入子文件夹中。我最终成功地将我的文件包含在以下内容中:

<?php
include('../translation.php');
?>

当我决定开始使用子文件夹时,我的无故障编码发生了意想不到的转变。在将所有文件更深入地放入文件结构后,我震惊地发现我不能再包含它们了,使用:

<?php
include('.../translation.php');
?>

现在我迷路了。我做错了什么?我是否理解我不能在项目中包含比 2 个目录更深的文件?我应该开始使用不同的文件系统吗?

4

4 回答 4

10

你的概念不正确。

  • .代表当前目录
  • ..表示父目录

这些是文件系统跟踪文件和浏览深度的方式。

但是你不能...用来改变目录。随着你的深入,你必须使用

例如:

include('../../translation.php');

包括文件,在当前目录之外的两个级别。这可能是你想要做的。

于 2012-04-08T17:26:06.867 回答
4

包括应该是:

<?php
include('../../translation.php');
?>

每个“升级”级别都需要自己的../.

例如,如果您有以下目录:

a
   a1
      filex.php
   a2
b
   b1
      filey.php

如果在 filex.php 中,您想包含 filey.php,您将执行以下操作:

<?php
include('../../b/b1/filey.php');
?>

上/下两次,下/下两次

基本上,任何时候你想“降低”一个级别/进入一个文件夹,你给出文件夹的名称,后跟一个正斜杠。但是要“向上”或离开当前文件夹(到当前文件夹的父文件夹),您给出..后跟正斜杠

于 2012-04-08T17:26:26.027 回答
1

如果你想更深入(子文件夹的子文件夹),只需使用../../

include("../../translation.php");

但是,如果您的项目是中型或大型,我宁愿建议您定义绝对路径。在您的 index.php 或您包含的任何文件中,定义类似SITE_ROOTor的内容INCLUDES_ROOT

define("SITE_ROOT", dirname(__FILE__));

然后按需使用它。

include(SITE_ROOT."/../../translation.php");

如果您包含来自不同文件夹的文件,这非常有用

也就是说,假设你有这个文件夹结构

    • 包括/
      • 引导.php
    • 翻译
      • en.php
    • 阿贾克斯/
      • ajax2/
        • ajaxfile.php
    • 索引.php

案例1:(失败)

index.php 包括

<?php
include("includes/boot.php");

ajax/ajax2/ajaxfile.php 包括

<?php
include("../../includes/boot.php");

包括/boot.php 包括

<?php 
include("translations/en.php"); // from index.php it works but from ajax/ajax2/ajaxfile.php it searches for wrong file

CASE2:(通过)

ajax/ajax2/ajaxfile.php 和 index.php 与 CASE1 内容相同

包括/boot.php 包括

<?php
define("INCLUDES_ROOT", dirname(__FILE__));
include(INCLUDES_ROOT."/../translations/en.php");

它通过了,因为INCLUDES_ROOT确保整个包含指向正确的目录!

于 2012-04-08T17:32:50.983 回答
-1

让我们假设这个文件夹树。

-> site
      -> public_html (Inside the site folder)
            ->  index.php (Inside the public_html folder)
      -> translation.php (Inside the site folder)

在你的 index.php 中你只需要使用include "../translation.php";

如果 translation.php 与站点文件夹位于同一文件夹中,则使用include "../../translation.php";

如果你的 translation.php 和 index.php 在同一个文件夹中,你只需要像这样包含:include "translation.php";

于 2012-04-08T17:28:47.927 回答