【问题标题】:Php Include - SubfoldersPHP 包含 - 子文件夹
【发布时间】:2014-04-07 03:57:17
【问题描述】:

我正在使用 php 包含。现在文件在子文件夹中。

错误是这样的:

警告:include(/headertop.php):无法打开流:第 11 行的 D:\ROLDANKING\xampp\htdocs\mysite\pages\print_design.php 中没有这样的文件或目录

HTML/PHP 文件是这样的:

<html>
<head>
    <title>PRINT DESIGN</title>
    <meta http-equiv="content-type" content="text/html; charset=UTF-8"/>
    <link rel="shortcut icon" href="../images/art_favicon.png" type="image/x-icon"/>
    <link rel="stylesheet" href="../css/body.css" type="text/css" media="screen"/>

</head>

<?php include ("headertop.php"); ?>

<?php include ("header.php"); ?>

<?php include ("nav.php"); ?>

<body>


<div id="contents">

</div>

</body>


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

</html>

【问题讨论】:

  • 我将根据您的问题假设这些文件“headertop.php”、“header.php”等在其他地方?与 "D:\ROLDANKING\xampp\htdocs\mysite\pages\print_design.php" 结合的这些文件的完整路径在哪里或是什么
  • 警告在文件名中显示了一个前导斜杠,那么你发布的代码怎么没有显示呢?
  • 你好,杰克,我用过 (".../name/header.php") 或 ("/name/header.php) 等等...但它没有工作。

标签: php html css include


【解决方案1】:

您要避免的事情是必须更改每个页面上包含的路径。你可以这样做:

<?php include $_SERVER["DOCUMENT_ROOT"] . "/includes/header.php"; ?>

这在网上可以很好地工作,但要在 XAMPP 中工作,您需要设置一个虚拟主机,以便链接指向相同的东西:http://sawmac.com/xampp/virtualhosts/

【讨论】:

  • 为什么要依赖 DOCUMENT_ROOT 呢?您只是在引入外部依赖项。只需使用相对于当前脚本的路径,即__DIR__ . '/includes/header.php'
  • 我不知道如何使用__dir__,但是从我在网上看到的混乱情况来看,它看起来像是一个相当大的工作。它会允许所有页面上的相同链接吗?如果没有,我更喜欢一种可以粘贴到任何地方的东西。
  • PHP: Magic Constants。使用它们使您的应用程序可移植并删除外部依赖项。它们很难使用
  • 谢谢菲尔。我确实事先阅读了该页面,但遗憾的是,它对我来说只是充满了开发人员的胡言乱语(也就是说,只有当你已经知道它的含义时它才有意义 - 开发人员文档不理解的一个常见问题。)一个简单的例子,与 DOCMUMENT_ROOT 用法相比,值一千字。
  • DOCUMENT_ROOT 在 PHP 手册中没有位置。它是一个 Web 服务器概念。我不确定 "__DIR__ - 文件的目录" 有什么难理解的地方
【解决方案2】:

假设你有正确的路径和文件,你可以试试这个......

<?php 
 include ("sub-folder/headertop.php");
 include ("sub-folder/header.php");
 include ("sub-folder/nav.php"); 
?>

【讨论】:

    【解决方案3】:

    警告:include(/headertop.php):无法打开流:第 11 行的 D:\ROLDANKING\xampp\htdocs\mysite\pages\print_design.php 中没有这样的文件或目录

    说你的目录中没有 headertop.php 文件 检查文件是否存在:D:\ROLDANKING\xampp\htdocs\mysite\pages\headertop.php

    你也可以使用:

    <?php 
     include ("headertop.php");
     include ("header.php");
     include ("nav.php"); 
    ?>
    

    代替:

    <?php include ("headertop.php"); ?>
    
    <?php include ("header.php"); ?>
    
    <?php include ("nav.php"); ?>
    

    【讨论】:

    • 您好 Mike M。感谢您的帮助,我不能将 headertop.php 放在“pages”文件夹中,因为它是一个常量。它与 index.php、footer.php、header.php 等一起放置在名为“mysite”的主文件夹中。
    • 所以D:\ROLDANKING\xampp\htdocs\mysite\headertop.php 是您要包含的页面,D:\ROLDANKING\xampp\htdocs\mysite\pages\print_design.php 因此 headertop.php 应该位于 \pages\ 如果您想要主目录只需使用 ../headertop.php 这个将是 ROOT 目录
    【解决方案4】:
    <?php include ("SUB_FOLDER/headertop.php"); ?>
    

    【讨论】:

      【解决方案5】:

      试试这个

      include '../headertop.php';
      

      include '/headertop.php';
      

      【讨论】:

        【解决方案6】:

        在过去的 3 天里,我浏览了几十个网页,我想我已经共同测试了大多数来到这里的人正在寻找的内容。

        绝对路径。它们必须在您的本地主机上手动建立,然后在您的 Live 网站上再次建立,但这与将变量集声明为特定的预构建函数没什么关系。

        留在我身边.. 每次我在 php(包含和回显)或 html 和 css 中引用一个链接时,我都会引用一个设置为根目录 + 原始链接的变量。

        例如

        background-image: url(<?php echo $root; ?>images/bg-0.jpg); 
        

        唯一的缺点是额外代码的可见性以及向 css 或 php 文档中的每个链接添加 $variable 的繁琐性。并且上帝禁止使用javascript,因为我什至没有触及它的根源。呵呵。双关语。

        无论如何,让这项工作.. 在我的 Styles.css 文档中,我只是将其转换为 Styles.php,将 CSS 代码包含在

        <style type="text/css"> *CSS* </style>
        

        标签,它启用 PHP 变量的回显,但作为字符串,或者在我们的例子中是绝对路径前导。 在我的头文件中,我现在将我的 CSS 包含为一个带有新根变量的 PHP 包含。

        include $php_root.'includes/css/styles.php'; 
        

        注意这个 $variable 与 echo 的不同吗?我声明变量的方式在 CSS/HTML 如何感知根目标以及 PHP 如何看待它方面发挥着重要作用。

        所以这些是我设置的变量。

        // WAMP Localhost
        $root = "http://localhost/PZD/";
        $php_root = $_SERVER['DOCUMENT_ROOT'] . "PZD/";
        
        // Live Server
        $root = "http://prozechdesigns.com/";
        $php_root = $_SERVER['DOCUMENT_ROOT'];
        

        这些可以在你的 main header.php 中设置。

        或者,如果您像我一样使用数据库文件进行连接和通信,您可以将它与数据库 connect.php 文件配对。我做到了;这样,当我调用我的 init.php 文件或需要编辑 init.php 时,我无需担心在 localhost 和实时网站之间覆盖后使用了哪些 $root 变量。

        您在阅读本文时可能没有使用 WAMP,并且在您的时间和日期或配置中,您的 PHP 根位置可能与我的设置不同。但是,如果您正在使用 WAMP,并且可能希望找出您的 root 设置或更改它的位置,请查找默认位于 "wamp/bin/apache/apache#/conf" 中的 httpd.conf 文件。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2011-10-09
          • 1970-01-01
          • 2015-09-14
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2014-01-03
          • 2013-02-15
          相关资源
          最近更新 更多