我已经定义了2个变量,包括联系人和衬衫。正如你所看到的那样,他们也在标题中。我仍然得到两个变量都未定义的消息。
我收到此错误消息:
(!)SCREAM:忽略(!)
的错误抑制注意:未定义的变量:部分 第17行的C:\ wamp \ www \ Test \ shirts4mike \ inc \ header.php
Call Stack #TimeMemoryFunctionLocation 10.0003243592 {main}( ).. \的index.php:0
20.0006246920 include('C:\ wamp \ www \ Test \ shirts4mike \ inc \ header.php').. \ index.php:3“>
和第18行相同。
shirts.php :
<?php
$pageTitle = "Mike's Full Catalog of Shirts";
$section = "shirts";
include('inc/header.php'); ?>
<div class="section page">
<h1>Mikes’s Full Catalog of Shirts</h1>
</div>
<?php include ('inc/footer.php'); ?>
contact.php :
<?php
$pageTitle = "Contact Mike";
$section = "contact";
include('inc/header.php'); ?>
<div class="section page">
<h1>Contact</h1>
</div>
<?php include ('inc/footer.php'); ?>
的header.php :
<html>
<head>
<title> <?php echo $pageTitle ?></title>
<link rel="stylesheet" href="css/style.css" type="text/css">
<link rel="stylesheet" href="http://fonts.googleapis.com/css?family=Oswald:400,700" type="text/css">
<link rel="shortcut icon" href="favicon.ico">
</head>
<body>
<div class="header">
<div class="wrapper">
<h1 class="branding-title"><a href="./">Shirts 4 Mike</a></h1>
<ul class="nav">
<li class="shirts <?php if ($section == "shirts"){ echo "on"; } ?>"><a href="shirts.php">Shirts</a></li>
<li class="contact <?php if ($section == "contact"){ echo "on"; } ?>"><a href="contact.php">Contact</a></li>
<li class="cart"><a href="#">Shopping Cart</a></li>
</ul>
</div>
</div>
<div id="content">
答案 0 :(得分:5)
当你在这样的PHP错误消息中看到SCREAM
时,这是由于以下情况:
@
符号或其他错误抑制机制来抑制错误消息,而xDebug正在覆盖此错误。xDebug是一个PHP扩展,旨在帮助调试PHP程序。它通常不应安装在生产系统上;仅限于开发系统。
xDebug有一个名为“Scream”的设置,旨在防止错误被抑制。这又适用于开发系统。开发人员可能希望在正常情况下抑制错误,但在调试时查看这些错误很有用。所以scream设置会覆盖PHP隐藏错误消息的所有常规方法。这对于调试很有用,但在生产系统上却很糟糕。
xDebug永远不应安装在面向公众的生产服务器上,因此,如果它描述了您的系统,则应将其删除,或要求将其删除。这可能就像修改PHP.ini文件以删除对xDebug的引用一样简单(虽然这只会禁用扩展而不是卸载它)。
如果已安装并且您无法对其进行任何操作,那么您需要找到一个不在生产系统上安装开发工具的更好的Web主机。
说完所有这些后,如果你收到$section is undefined
的消息,那么它确实意味着代码中需要修复的错误。
当header.php
中包含{}时,错误发生在index.php
。
您已向我们展示了shirts.php
和contact.php
,两者都正确设置了$section
。你没有向我们展示index.php
,但我猜它包含header.php
的方式与其他方式相同,但未设置为$section
其他人那样做。
因此,您可以通过编辑index.php
来修复错误,以便以与其他网页相同的方式设置$section
。即使它只是将其设置为空白字符串,这也足以修复错误。
我希望有所帮助。
答案 1 :(得分:2)
堆栈跟踪指示包含两个文件以获取此特定错误(按相反顺序):
inc\header.php
index.php
在问题中,index.php
未显示 - 但最有可能的是:
<?php
$pageTitle = "something";
include('inc/header.php');
即。缺少的变量是 not 声明,然后才会在您执行的代码中使用它们。
scream是一个扩展,它忽略了@
运算符的使用 - 即正在执行的代码中的某个地方,正在使用它,它通常被认为是忽略错误的不良做法。但是,turn scream off - 适用于制作/实时应用,但当然应该解决错误/警告/通知。