繁体   English   中英

一些 PHP 包括工作,其他导致它们之后的所有代码停止工作

[英]Some PHP includes work, others cause all code after them to stop working

我是编码新手,主要是通过 W3Schools 等自学的,所以请耐心等待。

我有一个使用 Linux 系统的 VPS。 我正在为桌面 RPG 创建一个网站。 我的网页文件大多是用 html 编写的,但是是.php 文件,因为我想使用其中的一点点(主要是“包含”function,这是我的问题的来源)。 因为 Linux,当我将这些文件上传到服务器时,我将 go 放入“home”文件夹,然后是一个以我的用户名命名的文件夹,然后是“public_html”文件夹,所以如果我理解正确的术语,我应该参考以 public_html 作为“根目录”。

因此,在该根目录中,我有各种文件夹和上述的.php 文件,它们创建了我的站点结构,所有这些都可以正常工作; 该网站可在线查看。 对于我的网页,我使用包含 function 来包含 header、页脚和侧边栏之类的内容,效果很好。

在根目录中,我创建了一个名为“obj”的文件夹。 这包含大量 small.php 文件,它们不是完整的网页,而是每个仅包含一组表示 RPG 角色统计数据的变量。 例如,一个名为“obj.StickmanSoldier.php”的文件具有以下内容:

<?php include 'class.Character.php';
$stickmansoldier = new Character();
$stickmansoldier->name = array('Stickman Soldier','Standard Stickman Soldier');
$stickmansoldier->affinity = 'Ice';
$stickmansoldier->xp = 19;
$stickmansoldier->hp = 20;
$stickmansoldier->vp = 20;
$stickmansoldier->mp = 5;
$stickmansoldier->attack = 2;
$stickmansoldier->strength = 4;
$stickmansoldier->handeye = 5;
$stickmansoldier->platform = 3;
$stickmansoldier->weight = 3;
$stickmansoldier->icemod = '+2';
?>

我想澄清一下,“class.Character.php”文件如下所示:

<?php class Character {
public $name='???';
public $player='Maestro';
public $affinity='Earth';
public $level=0;
public $xp=0;
public $hp=1;
public $badge_hp=1;
public $current_hp=0;
public $vp=0;
public $badge_vp=0;
public $current_vp=0;
public $mp=0;
public $badge_mp=0;
public $current_mp=0;
public $status='Normal';
public $bal=0.00;
public $attack=1;
public $magic=1;
public $defense=0;
public $brain=1;
public $strength=1;
public $handeye=1;
public $platform=1;
public $knowledge=1;
public $clever=1;
public $charisma=1;
public $weight=1;
public $ap=0;
public $earthmod='--';
public $icemod='--';
public $watermod='--';
public $windmod='--';
public $firemod='--';
public $thundermod='--';
public $poisonmod='--';
public $plantmod='--';
} ?>

所以在网页文件中,我可以使用<?php include 'obj.StickmanSoldier.php';?>来调用这些统计信息,然后使用其他代码(如 php 的“echo”)在该页面上显示它们。 如果页面在子文件夹中,它可能看起来像<?php include '../../obj.StickmanSoldier.php';?> ,但你明白了。 这与我用于 header 和页脚之类的包含方法相同,它适用于这些方法。 当我调用这些统计文件之一时,它也可以正常工作。

一。

如果我在同一个网页上包含多个这些统计文件,那么突然之间,第二个包含之后页面上的所有代码都停止工作,给我一个几乎空白的页面。 或者,如果我将包含放在中途,则为半空白页。

现在,当我说“第二个包含”时,忽略了 header 和页脚内容的包含,因为它们在那里,与所有其他站点页面上的一样。 如果我只包含 obj 文件夹中的一个统计文件,那么一切正常; 通过使用该统计文件中定义的变量,我可以在各种 forms 中显示这些统计信息。 但是当我尝试在同一个网页文件中包含多个统计文件时......它确实很糟糕。

我已经检查了拼写错误,并且我已经切换了我所包含的统计文件,所以对于一个特定的统计文件来说这不是问题。 obj 文件夹中有 983 个文件,所以......我希望我不必编辑所有文件。 但似乎内容不是问题。 包含 function 的东西只是搞砸了。

我还没有创建 php.ini 文件,所以如果我有一个,它只是我的服务器附带的默认文件。 我也只将统计文件命名为“obj.Whatever.php”,因为我看到有人在某处这样做; “对象” 零件不为我正在做的任何事情提供 function,因此如果由于某种原因额外的点导致问题,我可以根据需要更改名称。 但考虑到其中一些包含确实有效,这些解释都没有任何意义。

我的网站位于http://arpeggiosystem.com/ 它不完整,所以一些链接被破坏和填充,但如果你想看到我描述的这种包含引起的半空白页现象的结果,go 到http://arpeggiosystem.com/default/enemy/棒。php

编辑:哦……是不是因为所有的统计文件都使用包含 function 来调用 class 文件? 它不喜欢在同一页面上多次调用吗?

空白页很可能是 PHP 解析器错误的原因。 为了能够调试脚本,您需要设置错误报告。 您可以通过在 php.ini 文件或 index.php 中进行设置来执行此操作。 仅使用这两种方法之一。

一旦设置了错误报告,它将显示错误,并且在脚本中追踪错误会容易得多。 看看这里以了解如何处理您的错误,并了解它们的含义。

确保不要在实时网站上留下错误报告。 在您机器上的开发文件夹中使用它。

在您的 php.ini 文件中,尝试将这两行编辑为如下所示。

error_reporting = E_ALL
display_errors = 1

或者在页面顶部的 index.php 文件中包含 2 行。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM