【问题标题】:Php include shows codephp包含显示代码
【发布时间】:2014-12-30 03:50:00
【问题描述】:

问题:当我在页面顶部包含一个 php 文件时,它不会运行脚本,而是显示代码。

如果我在页面上执行简单的回显命令,它可以正常工作,但包含文件则不行。

我已经用谷歌搜索了这个问题,但找不到解决问题的解决方案。我见过的大多数类似问题都是通过使用 php 标签而不是简写来解决的。

守则

index.php 位于根文件夹中 init.php 位于根文件夹中名为“core”的文件夹中。

包含文件:init.php

<?php
session_start();

$GLOABALS['config'] = array (
    'mysql' => array (
        'host'      => '127.0.0.1',
        'username'  => 'root',
        'password'  => '',
        'db'        => 'lr'
    ),
    'remember' => array (
        'cookie_name'       => 'hash',
        'cookie_expiry'     => 604800
    ),
    'session' => array (
        'session_name'      => 'user'
    )
);

spl_autoload_register (function ($class){
    require_once 'classes/' . $class . '.php';
});

require_once 'functions/sanitize.php';
?>

包含页面:index.php

<?php include '/core/init.php'?>

<!-- Web Page Stuff -->

sanatize.php

function escape ($string){
return htmlentities ($string, ENT_QUOTES, "UTF-8");
}

为什么php显示不运行?

【问题讨论】:

  • sanitize.php 中有什么内容?想知道里面是不是有什么东西导致了它。另外,您将其包含在哪个页面中?如果是扩展名为 .html 的页面,您可能需要更改服务器上的设置以解析 .html 页面中的 php。
  • 好吧,发布的 sanitize.php 没有 &lt;?php 开始标签。您没有提到显示的代码,但这是一个很好的候选者。
  • 哇,我完全忽略了它,因为它是一个小文件。 Bishop 是对的,它是清理文件。谢谢主教!将其发布为答案,我会为您标记!
  • index.php 文件包含后缺少分号 (;)。
  • 您可以通过删除包含并运行代码来解决此问题,然后您可以找到包含文件创建问题并修复它,请检查正确的 php 标签,希望这有帮助

标签: php include


【解决方案1】:

你错过了

<?php
?>

文件中要包含的标签。

但是哇!!那么我是否理解在 PHP 开发过程中包含的任何错误都会将整个库文件分流到 Web 浏览器?!!?!与我的全栈编程或网络安全概念如此陌生,所有这些都将进入私人错误日志,永远不会将代码暴露给客户端。

在我看来,PHP 绝不会比 PERL 更安全!所以 Perl 有更多的服务器功能,并不是你错过了不需要定义变量的随意“松散”代码。它是否会在任何错误或仅在实例的解析错误时转储内部结构代码?!

【讨论】:

  • 这大部分是咆哮(并且不正确),而不是答案。我建议你删除离题的咆哮。
【解决方案2】:

检查您的 sanitize.php 文件。我认为那里可能有错误。

【讨论】:

  • 由于显示了 sanitize.php 的内容,并且缺少 部分,因此可以清楚地看出这是问题所在,正如 bishop 的评论所指出的那样,以及Light Bringer 的回答(尽管他的安全相关评论是无关的)。如此含糊的答案将无助于将来尝试解决此问题的人们。
猜你喜欢
  • 1970-01-01
  • 2018-02-07
  • 2011-05-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-10-17
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多