我不确定解决这个问题有多简单,但我认为我做错了什么。我是PHP新手,请耐心等待。
当我开始学习PHP时,我总是将所有项目文件与index.php
一起放在同一个文件夹中,因此包括以下所有内容:
<?php
include('./translation.php');
?>
后来在学习过程中我获得了经验并且技能提高了,我不得不开始使用文件夹并将我的文件放入子文件夹中。我最终成功地将我的文件包括在内:
<?php
include('../translation.php');
?>
当我决定开始使用子子文件夹时,我的无故障编码出现意外转变。在将所有文件更深入地放入文件结构后,我惊讶地发现我不能再包含它们了,使用:
<?php
include('.../translation.php');
?>
现在我迷路了。我做错了什么?我是否理解我不能在项目中包含超过2个目录的文件?我应该开始使用不同的文件系统吗?
答案 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_ROOT
或INCLUDES_ROOT
之类的内容。
define("SITE_ROOT", dirname(__FILE__));
然后根据需要使用它。
include(SITE_ROOT."/../../translation.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";