PHP包含文件但未定义变量

PHP包含文件但未定义变量,php,Php,我是PHP新手,我开始使用XAMPP来构建网站。我有下面的代码 db.php: <?php $hostName='localhost'; $userName='xxxxxxxxx'; $userPass='xxxxxxxxx'; ?> 还有一个test.php: <?php include 'db.php'; echo $hostName; ?> 但是现在它向我显示了注意:未定义的变量:hostName 我发现,regi

我是PHP新手,我开始使用XAMPP来构建网站。我有下面的代码

db.php:

<?php
    $hostName='localhost';
    $userName='xxxxxxxxx';
    $userPass='xxxxxxxxx';
?>

还有一个test.php:

<?php
    include 'db.php';
    echo $hostName;
?>

但是现在它向我显示了注意:未定义的变量:hostName

我发现,register\u globals需要在php.ini中设置为“on”,但设置之后,当我重新启动XAMPP时,XAMPP show:指令“register\u globals”在php中不再可用


我将相同的代码移动到Hosting24,但它可以工作,任何人都可以帮助吗?

发生这种情况的唯一原因是文件
db.php
未正确包含。检查日志文件以了解发生这种情况的原因

当包含文件时,PHP将此文件视为直接将代码复制/粘贴到包含文件中。因此,包含文件中定义的所有变量都将与包含文件具有相同的作用域,因此可用


在您的示例中,它应该可以正常工作。所以我的答案是:检查日志文件中的include错误。确保日志记录设置为“完全”

我刚刚被一个类似的问题咬了一口——肯定不是OP的问题,但属于问题的标题

在我的例子中,我在服务器上禁用了PHP短标记,但是包含的文件意外地使用了短标记。包含文件时,函数未定义,并且没有包含错误。我认为在这种情况下会发生这样的情况:文件被包含,但被视为空文件



如果您在包含/要求后遇到“未定义”问题,请检查您的文件标签以防万一。

尝试使用
require\u once('db.php')
而不是include。

我也遇到过类似问题,问题是文件的文件访问权限文件是否在同一文件夹中?顺便说一句,这与确实从PHP中删除的
register_globals
无关。是的,同一文件夹中的两个文件都尝试在db.PHP中打印类似echo“hi”的内容,然后运行test.PHP。这将显示是否将db.PHP添加到您的文件中,或者不尝试使用
require
而不是
include
-如果您遇到错误,加载
db.php
文件时出现问题(可能是由很多事情引起的)@DeepakSrinivasan是的,但它没有打印任何内容,因此我使用get_included_files()来显示列表中包含的文件,“db.php”。我使用get_required__files()并且“db.php”在列表中。我可以知道如何检查日志文件吗?很抱歉,我对phpy非常陌生。您的日志文件存储在:
\xampp\apache\logs\error.log
。如果不存在,请检查通过运行
phpinfo()
可以获得的
错误日志设置。遇到问题时检查日志文件总是一种好的做法:)是的,我找到了,谢谢你的建议=D但日志文件没有关于未定义变量的relevent事件:(与
db.php
无关?确保您的错误级别设置为maxya,即使我在日志文件中搜索,也不会有任何错误。这个问题让我发疯,相同的代码但移动到Hosting24是可行的。@@您能详细说明您的答案吗?在
test.php
中添加关于您提供的解决方案的更多描述,而不是
包括'include.php';
,将其替换为
require\u一次('db.php')
这不提供问题的答案。若要评论或要求作者澄清,请在他们的帖子下方留下评论-您可以随时对自己的帖子发表评论,一旦您有足够的评论,您就可以发表评论。Hi@JoJoe为您提供信息,它确实回答了作者提出的问题。没有什么需要ela的硼酸盐。这当然是可能导致这里面临的不稳定问题的原因之一。任何PHP新手也可能理解我的意思。如果你猜我错了,那么为什么不提供一个答案,而不是对社区的新贡献者粗鲁。热烈的问候。嘿@声学头,不要太过个人化,这是一个自动生成的基因有人将你的答案标记为低质量(可能是因为它的长度),它出现在审阅队列中,当我审阅它时,我将它标记为“应该是评论”。我这样做是因为我认为它缺乏必要的长度和解释深度,无法作为答案。然后,系统会自动对答案进行评论,诚然,没有使用最佳的措辞,但它没有那么灵活。如果其他评论者认为你的答案很好,绝对不会发生任何事情。:)哦,对不起,这个自动生成的评论对新用户来说太吓人了:PI最近也有同样的问题,尽管我经过一些努力后发现了这个问题。你的说法绝对正确。