我知道这不是使用stackoverflow的正确方法,但我只需要快速回答我的问题
这是文件夹层次结构
login (folder)
-- login.php
php (folder)
-- connection.php
index.php
在login.php中我使用include_once("../php/connection.php")
我使用include_once("login/login.php")
当我运行index.php时,我得到以下问题
警告:include_once(../ php / connection.php):无法打开流:第3行的/.../public_html/plog/login/login.php中没有此类文件或目录
提前感谢您的帮助:)
答案 0 :(得分:2)
你更接近最佳答案,但更好的模式是:
您创建一个引导脚本并将其放在已知位置。为了实现这一点,所有重要的是每个脚本都需要require_once()相对于该脚本的引导程序文件。
大多数框架都使用前端控制器模式,这是MVC框架的典型入口点,但即使这对你来说太复杂了,只要总是require_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');
如果您的系统在没有包含文件的情况下实际上无法正常运行,我强烈建议使用require_once over include_once,因为如果您无法在登录时连接到数据库,可能会这样做。 require_once将导致运行时错误,而include_once只是继续它的快乐方式,无论它是否可以实际找到并包含该文件。
说实话,不是你的目录命名的忠实粉丝。一个名为/ php的目录?这告诉你什么?这不是所有的PHP代码吗?
人们已经对良好的结构进行了大量的思考,然后是PSR的努力,作曲家等。拿a look at this来获得更好的计划。
答案 1 :(得分:1)
我使用常量BASE_URL更新代码,您将定义根,以便您可以从其他站点使用它
<?php
define('BASE_URL', 'http://example.com');
include(BASE_URL."/php/connection.php");
?>
答案 2 :(得分:0)
我做了一些研究,发现最好的方法是做到这一点,而不必声明任何常量如下:
在login.php中的我以这种方式include_once( substr(__DIR__, 0, strrpos(__DIR__, "/") + 1 ) . "php/connection.php")
;
所以这将解决整个问题。我没有必要定义任何东西。现在我几乎可以在任何地方复制这个子文件夹而无需改变任何内容。