-1

我在尝试包含/需要一个返回 2 个目录的 php 脚本时遇到了一些问题。这不是一个真正的问题,因为我想出了一个解决方法,但是我很想解释正在发生的事情。

这是文件结构:

  • 应用程序代码
    • db.php(我试图包含的文件)
  • 学生管理
    • 索引.php
    • 部门
      • getData.php(我试图将 db.php 包含到的文件)

我想包含appCode/db.phpstudentManagement/dep/getData.php.

getdata.php is executed with ajax from index.php

当我使用:

require_once("../../appCode/db.php");

它不起作用。

它工作的唯一方法是我首先更改目录:

chdir("../");
require_once("../appCode/db.php");

为什么第一种方法不起作用?我也尝试过使用 include 而不是 require 但它是一样的。我正在 mamp 3.0.4 上对其进行测试。

任何帮助表示赞赏!

4

2 回答 2

0

如果您从根目录一直了解整个目录,则可以使用:

http://php.net/manual/en/function.set-include-path.php

现在,您可以始终包含或要求从您的包含路径开始的文件,而不是使用相对路径。

你可以把它放在 getData.php 中:

set_include_path ('/homepages/www/2/yourworkingpath');//Use your own directory
require_once 'appCode/db.php';

如果您需要包含,您也可以在其他文件中执行相同的操作,并且它将始终使用您的包含路径,因此您不必一直弄清楚要更改到哪个目录。希望这会有所帮助。

于 2014-07-12T22:39:40.840 回答
0

那是因为当你和它们的变体时require()include()它总是相对于调用的初始 php 文件(在你的情况下index.php

实际上chdir与它无关,而这个:

require_once("../appCode/db.php");

是正确的称呼方式。

总是把你的精神自我(!)index.php当你需要文件和使用目录时。您的“活动目录”是放置 index.php 的目录。您始终可以使用getcwd() http://php.net/manual/en/function.getcwd.php验证此当前工作目录

于 2014-07-12T21:37:57.317 回答