PHP包括不起作用

时间:2012-04-08 17:24:24

标签: php

我不确定解决这个问题有多简单,但我认为我做错了什么。我是PHP新手,请耐心等待。

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

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

后来在学习过程中我获得了经验并且技能提高了,我不得不开始使用文件夹并将我的文件放入子文件夹中。我最终成功地将我的文件包括在内:

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

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

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

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

4 个答案:

答案 0 :(得分:10)

你的概念不正确。

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

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

但是您无法使用...来更改目录。随着你的深入,你必须使用

例如:

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

包含当前目录之外的两级文件。这可能是你想要做的。

答案 1 :(得分:4)

包含应该是:

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

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

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

a
   a1
      filex.php
   a2
b
   b1
      filey.php

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

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

向上/向下两次,向下/ ib两次

基本上,只要你想要“关闭”某个级别/进入某个文件夹,就会给出该文件夹的名称,后跟正斜杠。但是要“向上”或从当前文件夹中移出(到当前文件夹的父文件夹),您可以使用..,然后使用正斜杠

答案 2 :(得分:1)

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

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

但是,如果您的项目是中等大小或大尺寸,我建议您定义绝对路径。在index.php或包含的文件中,定义SITE_ROOTINCLUDES_ROOT之类的内容。

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

然后根据需要使用它。

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

这对于包含来自不同文件夹的文件非常有用

那就是说,想象一下你有这个文件夹结构

  • ROOT
    • 包括/
      • boot.php
    • 翻译
      • en.php
    • AJAX /
      • ajax2 /
        • ajaxfile.php
    • 的index.php

CASE1 :(失败)

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确保整个包含指向正确的目录!

答案 3 :(得分:-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";