在PHP中,出于什么原因我不能包含来自外部文件的变量?

在PHP中,出于什么原因我不能包含来自外部文件的变量?,php,Php,如果在Page1.php和Page2.php中定义了$var,那么 //Page2.php include('Page1.php'); echo $var; //Page2.php 包括('Page1.php'); echo$var; 出于什么原因,它不会将$var的值打印到屏幕上?这些文件位于同一目录中,因此路径不应成为问题。我检查了php.ini文件,并没有什么真正让我感到惊讶。有什么想法吗?可能的原因: 当前工作路径并不总是与文件的相同。例如,如果Page2.php包含在更高级别,则该

如果在Page1.php和Page2.php中定义了$var,那么

//Page2.php include('Page1.php'); echo $var; //Page2.php 包括('Page1.php'); echo$var; 出于什么原因,它不会将$var的值打印到屏幕上?这些文件位于同一目录中,因此路径不应成为问题。我检查了php.ini文件,并没有什么真正让我感到惊讶。有什么想法吗?

可能的原因:

  • 当前工作路径并不总是与文件的相同。例如,如果Page2.php包含在更高级别,则该更高级别将是路径。请确保已直接加载Page2.php或相应地移动Page1.php
  • 确保
    $var
    确实是您所期望的。在Page1.php中回显以确认。(这也会检查是否包含正确的文件)
  • 如果源代码并非如此简单,请确保您没有在任何地方取消定义/清除
    $var
我刚刚测试过:

page1.php:

<?php
$foo = "bar"
?>

page2.php:

<?php
include('page1.php');
echo $foo;
?>

这很有效


您可能需要检查文件路径。此外,var_dump()还可以方便地检查变量输出。

如果是路径问题,您会在错误日志中看到警告。您还可以更改为require而不是include,这将变得显而易见

echo getcwd();
您还可以打印工作目录,以找出问题所在

$var是在函数中创建的吗?如果是这样的话,确保你有

global $var;

在该函数的第一次赋值之前。

检查您是否未关闭整个函数。可能include出错了,因此变量从未被包含。

…我假设您已经检查过$var中是否确实包含内容?我无法计算在字符串中意外出现空白或“”并试图将其打印出来的次数。第2页中的include调用来自何处?var是如何声明的?Steve,是的,我检查过$var是否有内容。Paolo,$var在第1页声明$var=“你好”;查看Page1.php也会很有帮助。