2017-10-15 235 views
0

PHP的新手,试图找出相对路径和绝对路径如何处理require。PHP需要路径/相对或绝对

我的结构是这样的:

的index.php
/inc/db_functions.php
/inc/config.php
/login/login.php

db_functions.php包括配置.PHP使用 require_once 'inc/config.php';

的index.php包括db_functions.php使用require_once 'inc/db_functions.php';

如果用户未登录,则浏览器重定向到login.php。 最初login.php位于根文件夹中,并使用与index.php相同的require。它工作完美。

现在它在它自己的子文件夹中。 我改放在require_once使用 require_once('../inc/db_connect.php');

代码的工作,直到它得到的db_connect.php放在require_once行,然后失败。

我改变了在login.php中再次要求是: require_once(__DIR__.'/../inc/db_connect.php');

再次失败时,它得到了放在require_once在db_connect.php

我改放在require_once在db_connect是一个绝对路径。它又失败了。

有没有什么办法可以解决这个问题,因为包含文件的包含路径似乎被调用文件的位置所改变(我认为这有意义),但是如何使它更加健壮。

+1

请编辑您的问题,以便它包含您的文件的源代码并编写您获得的错误消息。但是,魔术常量'__DIR__'应该可以做到。 – Progman

+0

嗨。我会尝试上传代码,但它只有几行,所以我会先修剪它。我也不会收到错误信息。 netbeans下的调试只停留在该行,并且不会继续。 – Flugan

+0

您可能需要检查https://stackoverflow.com/questions/845021/how-to-get-useful-error-messages-in-php以查看如何从您的PHP脚本中获取错误消息。 – Progman

回答

0

db_functions.php必须包含config.php使用 require_once'config.php';因为它们在同一个文件夹中。

一般来说,最好是使用完整路径。