【问题标题】:Include in PHP is ineffective包含在 PHP 中无效
【发布时间】:2016-01-09 17:39:18
【问题描述】:

我创建了一个名为 index.php 的文件,在与 index.php 相同的文件夹内有一个名为 "includes" 的文件夹>.

里面有两个PHP文件,head.phpheader.php。问题是这两个文件没有包含在 index.php 中。现在,我搜索了整个 StackOverflow,但似乎找不到答案。

<!doctype html>
<html>
    <?php include 'includes/head.php'; ?>

    <body>
        <?php include 'includes/header.php'; ?>
        <div id="container">
            <aside>
                <div class="widget">
                    <h2>Widget Header</h2>
                    <div class="inner">
                        Widget contents
                    </div>
                </div>
            </aside>
        </div>
    </body>

</html>

【问题讨论】:

  • 试试&lt;?php echo include ('includes/head.php'); ?&gt;
  • @Fred-ii-,我在使用名为 phpVMS 的 CMS 时遇到问题,因为它使用 php include 而不是 php echo include
  • @ctabuyo 好吧,我们会看看 OP 要说什么(如果他们在这里阅读 cmets);但我对此表示怀疑。然而,更疯狂的事情发生了;-)
  • 我不确定我是否正确使用错误报告功能,但此时没有报告错误。

标签: php html include


【解决方案1】:

根据我对 OP 的评论:

@canhandlehtml 现在的问题是,如果您安装了网络服务器/PHP,是否已正确配置,以及您如何访问它。作为http://localhost/file.phpc://file.php in 您的网络浏览器?这完全是两种不同的动物。 ——弗雷德-ii-

根据您的评论:

我确实以 c://file.php 访问它,我不知道这可能是个问题,请原谅我的不足,php 对我来说是全新的东西

您以c://file.php 而不是http://localhost/file.php 的身份访问它,这就是您的包含不起作用的原因。

Web 浏览器不会以这种方式解析/执行 PHP 指令。它要求它通过安装、运行和正确配置的 Web 服务器/PHP 的主机运行。

旁注:

要包含的代码应该“回显”某些内容以“显示”某些内容,如果这是意图的话;回显 HTML 等。

看到&lt;?php include 'includes/header.php'; ?&gt;,我认为你有一个导航菜单形式。

如果它包含类似的内容:

<?php
    $var = "Hello world";

而且它不是“回显”,那么它就不会出现在您呈现的 HTML 中,它需要回显。

<?php
    echo $var = "Hello world"; // this is a valid directive
                               // it both echo's and assigns

不确定&lt;?php include 'includes/head.php'; ?&gt; 是否包含元数据或要包含的 CSS 等,以及是否包含 &lt;head&gt;&lt;/head&gt; 标记。如果没有,那么你需要添加那些,如果你包括那个,或者需要在 head 标签中的 JS 等等。


error reporting 添加到文件顶部,这将有助于查找错误。

<?php 
error_reporting(E_ALL);
ini_set('display_errors', 1);

// rest of your code

旁注:只应在暂存阶段显示错误,而不是在生产阶段。

【讨论】:

  • 谢谢,我会尽快修复并回复。
  • 我的意思是非常感谢 :D 我试图围绕 php 的概念思考很长一段时间,现在更清楚了 ;)
【解决方案2】:

假设网页是通过网络服务器而不是直接从文件系统访问的,那么使用/设置include_path 应该有助于缓解问题(也就是说,在包含的文件中使用echo 是更常用的方法! )

您可以使用文件系统路径包含文件,但您无法在没有网络服务器的浏览器中运行/执行 php。

<?php
    /* Once the include path is set it is easy to include the file by name alone */
    set_include_path( __DIR__ . DIRECTORY_SEPARATOR . 'includes' . DIRECTORY_SEPARATOR );
?>
<!doctype html>
<html>
    <head>
        <?php 
            include('head.php');
        ?>
    </head>
    <body>
        <?php 
            include('header.php');
        ?>
        <div id='container'>
            <aside>
                <div class='widget'>
                    <h2>Widget Header</h2>
                    <div class='inner'>
                        Widget contents
                    </div>
                </div>
            </aside>
        </div>
    </body>
</html>

【讨论】:

  • 那是另一种方式 ;-)
【解决方案3】:

尝试使用

include("includes/head.php");

【讨论】:

  • @ArjanShrestha include 不是函数,因此不需要括号括起来。 (见include docs)。这很可能是路径问题。
  • @Qirel 好的,谢谢,但它也可以与括号一起使用,有什么不同吗??
  • 它可以工作,是的,但它不是一个函数——所以你不需要它。见stackoverflow.com/q/10918598/4535200
猜你喜欢
  • 1970-01-01
  • 2012-05-13
  • 2014-05-17
  • 2018-12-02
  • 2013-12-11
  • 2021-05-23
  • 2020-06-03
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多