我知道这不是使用stackoverflow的正确方法,但是我只需要快速回答我的问题
这是文件夹层次结构
login (folder)
-- login.php
php (folder)
-- connection.php
index.php
在login.php中我使用 include_once("../php/connection.php")
在index.php中我使用 include_once("login/login.php")
当我运行index.php时,我会收到以下问题
警告:include_once(../php/connection.php(:未能打开流:/.../.../public_html/plog/login/login/login/login.php在第3行3
中没有此类文件或目录预先感谢您的帮助:(
您更接近最佳答案,但是更好的模式是:
您创建一个引导脚本并将其放置在已知位置。为此,重要的是,每个脚本都需要相对于该脚本require_once((bootstrap文件。
大多数框架都使用前控制器模式,该图案是MVC框架的典型入口点,但是即使此时对您来说太复杂了,只要您始终surectir_once('../somedir/bootstrap(,此技术仍然有效.php'(;
Bootstrap.php脚本是任何配置设置,阅读环境变量,设置常数等的好地方。
一开始,您想拥有这样的东西:
if (!defined('ABSPATH')) {
define('ABSPATH', dirname(__FILE__) . '/');
}
现在,重要的是,您了解其他文件可能与Bootstrap.php所在目录所具有的关系。例如,您将其放在login.php目录中。
那么您的require_once((将是:
require_once(ABSPATH . login.php);
连接将是:
require_once(ABSPATH . '../php/connection.php');
我强烈建议您的inceed_once include_once,如果您的系统在没有随附的文件的情况下实际上是非功能性的,那么可能是如果您无法在登录时连接到数据库。require_once会导致运行时错误,而Include_once只是在Merry的方式上继续进行,无论它是否可以真正找到并包括文件。
老实说,这不是您目录命名的忠实拥护者。称为/php的目录?那告诉你什么?这不是所有PHP代码吗?
人们对良好的结构进行了很多思考,然后是PSR的努力,作曲家等。看看这一点。
我更新代码,因此使用常量的base_url,您将定义根,以便您可以从其他网站
使用它<?php
define('BASE_URL', 'http://example.com');
include(BASE_URL."/php/connection.php");
?>
我做了一些研究,发现这样做的最佳方法而无需声明任何常数是:
在login.php中i connection.php shis include_once( substr(__DIR__, 0, strrpos(__DIR__, "/") + 1 ) . "php/connection.php")
;
这样可以解决整个问题。我不必定义任何东西。现在,我几乎可以在无需更改任何内容的情况下复制这个子文件夹。