PHP 项目中的目录和路径问题

Issues with directories and paths in a PHP project

我无法解决这个路径问题。正如您所看到的,突出显示的标签位于名为 admin_navigation.php 的文件中,href 从 include 文件夹向上一个目录,即 admin 和文件 posts.php。绝对路径对我和 Phpstorm 来说似乎是正确的,但是 PHP 服务器跳转到这个位置“http://localhost/cms/posts.php?source=add_post" but instead, it is supposed to go to "http://localhost/cms/admin/posts.php?source=add_post”。如果有人能向我解释这种奇怪的行为,我将不胜感激。

当您 link 文件 include() 时,您并不是 'referencing' 它们本身,而是 复制 目标的内容文件到 include().

的文件

假设您在 /admin/index.php 上包含 admin_navigation.phpinclude('includes/admin_navigation.php') 或类似内容。这实质上是 admin_navigation.php 的内容 复制到 index.php 中。现在 index.php 包含完全相同的 link - <a href="../posts.php?source=add_post">add posts</a>.

因此,index.php/admin 向上查找一个级别,并尝试在 CMS 中找到 posts.php -- 它不能,因为文件那里不存在。

请注意,此过程适用于 每个 您包含 admin_navigation.php 的文件,因此如果您有来自多个不同文件夹的多个引用,那么您将不得不有一个绝对路径,以便 所有 文件正确引用目标。

这将通过 <a href="/CMS/admin/posts.php?source=add_post">add posts</a> 完成。

或者,如果您只在 admin 文件夹(categoriesindexposts)中的文件中包含 admin_navigation.php,您可以只需省略相对路径中的父文件夹导航:<a href="posts.php?source=add_post">add posts</a>.

根据您应该使用的文件夹结构

./posts.php?source=add_post

这意味着您的 posts.php 文件位于 admin_navigation.php 的上一级(即. http://localhost/cms/admin/posts.php?source=add_post)

如果你给 ../posts.php?source=add_post

它将搜索一个文件,该文件显示 admin_navigation.php 的 2 个级别(即 http://localhost/cms/posts.php?source=add_post