PHP的require_once修改局部变量?

时间:2018-11-19 03:19:52

标签: php

在我的网页中,我写道:

<?php
//define('__PUBLIC__', $_SERVER['DOCUMENT_ROOT'].'/public'); 
$doc_public = $_SERVER['DOCUMENT_ROOT'].'/public';
echo "Before include...<==============>$doc_public";
?>
<?php require_once($doc_public.'/inc/head.php');  ?>
<?php echo "After include...<==============>$doc_public"; ?>

页面显示: enter image description here

这首先发生在我发现页脚有致命错误,但头部很好时。

尽管我可以实现define或常量变量来避免这种情况,但我仍然很好奇它的发生方式。

P.S .:我在Apache上使用端口8001运行它。该端口在[apache \ conf \ extra \ httpd-vhosts.conf]中设置。我在此站点下运行多个webapp。我只是分享这些信息,因为我不确定这与本案无关。

谢谢!

1 个答案:

答案 0 :(得分:2)

当您需要文件时,如果修改了变量,它也会影响原始脚本,这就是它的设计方式。 Require不会创建一个与包含文件分开的辅助环境,它只是按顺序添加PHP代码,就像您在初始文件中编写代码一样。

看看官方的PHP文档,第一个示例与您的案例完全相同

http://php.net/manual/en/function.include.php

(include与require相同,后者只是抛出错误。有关include和require http://php.net/manual/en/function.require.php之间的区别的更多信息)