当前位置: 首页 > 知识库问答 >
问题:

如何正确包含路径正确的文件并删除“文件不存在”警告

宫弘亮
2023-03-14

我正在从事一个将连接到MySQL数据库的项目,需要以下内容:

  • 注册
  • 登录/登录-进入/退出
  • 链接

登录者可以使用两项:

  • 我的书签
  • 联系我们

我目前的网站结构如下:

 *Shortened* URL (project root folder): sois.com/440/finalproject/
    < li>finalproject文件夹内容:htdocs文件夹| mysql_connect.php < li>htdocs文件夹内容:书签文件夹|联系人文件夹|个人文件夹|包含文件夹 < li >书签文件夹内容(所有PHP文件):添加|删除|删除确认|索引|搜索|搜索表单|更新|更新表单 < li >联系人文件夹内容:contact.php < li >主文件夹内容(所有PHP文件):忘记|索引|链接|登录|登录|注销|注册 < li >包括文件夹内容:footer.php | header.php | logo . jpg

这是您在登录之前应该看到的图像:

/Home/index的代码。php如下:

<?php # index.php
session_start();
//check session first
if (!isset($_SESSION['email'])){
include ('header.php');
}else
{
include ('header.php');
}
?>

<h2>Project Description</h2>
<h2>Blah Blah Blah ...</h2>
<h2>put images here if you want ...</h2>
<h2>change background ...</h2>
<h2>modify the site as you want ...</h2>

<?php
include ('footer.php');
?>

我的问题很简单,我收到了错误:

    < li > "警告:include(keth cart . uwmsois . com/public _ html/440/final project/htdocs/includes/header . PHP):无法打开流:第5行的/home/keth cart/public _ html/440/final project/htdocs/home/index . PHP中没有此类文件或目录" < li >“警告:include():无法打开“keth cart . uwmsois . com/public _ html/440/final project/htdocs/includes/header . PHP”进行包含(include_path= '。:/usr/lib/PHP:/usr/local/lib/PHP '),位于/home/keth cart/public _ html/440/final project/htdocs/home/index . PHP的第5行" < li > "警告:include(keth cart . uwmsois . com/public _ html/440/final project/htdocs/includes/footer . PHP):无法打开流:在/home/keth cart/public _ html/440/final project/htdocs/home/index . PHP的第19行没有这样的文件或目录" < li >“警告:include():无法打开“keth cart . uwmsois . com/public _ html/440/final project/htdocs/includes/footer . PHP”进行包含(include_path=“。:/usr/lib/PHP:/usr/local/lib/PHP '),位于/home/keth cart/public _ html/440/final project/htdocs/home/index . PHP的第19行"

问:我如何正确链接header.php和footer.php的文件位置(位于include文件夹中),以便我的index.php(位于Home文件夹中)正确显示,如上图所示?

虽然我知道StackOverflow周围还有其他帖子,但我未能找到一个我完全理解并且可以适用于我的情况的帖子。如果我的问题看起来很基本,我深表歉意,但我完全感谢任何和所有的帮助!

谢谢大家,如果你有任何进一步的问题或需要更多的细节,让我知道。

共有3个答案

姬朗
2023-03-14

您可以使用__DIR__(如果DIR不可用,则使用dirname(__FILE__))获取当前脚本的路径。

现在,要包含一个文件,您可以执行以下操作:

<?php
define('ROOT', __DIR__.'/');
include (ROOT.'includes/header.php');
// or include relative to the root dir (if it's in a parent or sub dir)
include (ROOT.'../../header.php');
include (ROOT.'../includes/header.php');
// and if you want a "cleaner inclusion"
// the following will get the full absolute path without ".."
$path = realpath(ROOT.'../../header.php');
include ($path);
胡承载
2023-03-14

您可以使用 dirname(__FILE__); php 函数 - 给定一个包含文件或目录路径的字符串,此函数将返回父目录的路径。

$file_path = dirname(__FILE__);
include $file_path . DIRECTORY_SEPARATOR . 'header.php';

参考:http://us1.php.net/dirname

穆铭晨
2023-03-14

当您像当前一样在 PHP 中包含文件时(仅提供文件名,例如 header.php),PHP 将查找与当前正在执行的文件相同的目录中。

根据我对您的描述的理解(我很难理解格式),这是您的文档根目录中的目录布局(我只显示了对这个答案很重要的文件):

/home/index.php
/includes/header.php
/includes/footer.php

所以,如果您在/home/index中。php,并且您include‘header。php‘,php将假设您正在查找位于/home/header.php的文件。您需要做的是告诉PHP您正在寻找不同的位置。

在回答您的问题时,一个很好的方法是告诉PHP看起来相对于当前目录。这就是您的包含之后的样子:

include '../includes/header.php';
include '../includes/footer.php';

这基本上告诉 PHP 从 /home 上一级(进入 /),进入 include 目录,并包含页脚.php标头.php文件。

 类似资料:
  • 我在使用org.apache.commons.io.FileUtils从img目录删除文件时遇到问题。我正在使用以下代码: 实际上,该代码是用来替换img目录中已有的图像文件。我需要删除所有以前存在的文件,名称是n.*,与新文件,例如n.png。如果我试图删除图像文件,我会得到变量成功的false值,并且文件不会被删除。但不包括图像文件,例如*.abc;*.ACD;*.ACDC等被成功删除。这个问

  • 本文向大家介绍Oracle删除archivelog文件的正确方法,包括了Oracle删除archivelog文件的正确方法的使用技巧和注意事项,需要的朋友参考一下 Oracle在开启了归档模式后,会在指定的archive目录下产生很多的archivelog文件,而且默认是不会定期清除的,时间长久了,该文件夹会占用很大的空间。 问题:如何定期正确删除archivelog文件呢? 很多人直接在arch

  • 一些细节: Android6 文件名错误(2131099680ggj.3gp而不是ggj.3gp) 将文件保存在内部存储中,而不是保存在名为“TrueCapture”的新文件夹中的外部存储(SD卡在智能手机中)中。 除了Smartphone的explorer应用程序之外,似乎没有其他应用程序知道此文件

  • 我做了一个应用程序来保存客户发票在共享文件夹中,所以首先在我的桌面电脑上,我创建了一个文件夹,并在D:Drive中命名为“PDFinVoices”。 我已经让每个人都可以访问这个文件夹。文件夹右键单击->属性->共享->高级共享&也在安全选项卡中 java.io.FileNotFoundException:文件:\172.21.1.91\PDFinVoices\222016-08-23.pdf(文

  • 让我分享到目前为止我所学到的,并提出我的问题。如果希望获取文件夹的Uri并对其进行操作,则应使用和获取访问文件夹的Uri,并为该Uri设置W/R权限。 授予onActivityResult的持久权限: 如果选择设备的主文件夹: 如果使用DocumentFile类获取主文件夹的路径 返回:file:///storage/emulated/0 我的第一个问题是如何使用DocumentFile类获得包含

  • 问题内容: 例如,我要压缩存储在/Users/me/Desktop/image.jpg中的文件 我做了这个方法: 但是,当我提取文件时,解压缩的文件具有完整路径。 我不希望zip中每个文件的完整路径,而只想要文件名。 我该怎么做? 问题答案: 这里: 您正在使用整个路径为该文件创建条目。如果仅使用名称(不带路径),则将具有所需的内容: